From f9879057a6d2f560affe5138f592bf84553d98bf Mon Sep 17 00:00:00 2001 From: Robert Krimen Date: Thu, 2 May 2013 20:23:07 +0200 Subject: [PATCH] Partially implement new Object(...) --- builtin_object.go | 11 ++++++++++- object_test.go | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/builtin_object.go b/builtin_object.go index d7c9272..806a80d 100644 --- a/builtin_object.go +++ b/builtin_object.go @@ -16,7 +16,16 @@ func builtinObject(call FunctionCall) Value { return toValue(call.runtime.toObject(value)) } -func builtinNewObject(self *_object, _ Value, _ []Value) Value { +func builtinNewObject(self *_object, _ Value, argumentList []Value) Value { + value := valueOfArrayIndex(argumentList, 0) + switch value._valueType { + case valueNull, valueUndefined: + case valueNumber, valueString, valueBoolean: + return toValue(self.runtime.toObject(value)) + case valueObject: + return value + default: + } return toValue(self.runtime.newObject()) } diff --git a/object_test.go b/object_test.go index 2dbfec5..0f844c3 100644 --- a/object_test.go +++ b/object_test.go @@ -35,3 +35,12 @@ func TestObject_getPrototypeOf(t *testing.T) { [abc,def,ghi,ghi+""]; `, "[object Object],[object Object],,null") } + +func TestObject_new(t *testing.T) { + Terst(t) + + test := runTest() + test(` + [ new Object("abc"), new Object(2+2) ]; + `, "abc,4") +}