mirror of
https://github.com/phpv8/v8js.git
synced 2025-01-03 20:21:52 +00:00
Set Array.prototype on ArrayAccess wrapped object
This commit is contained in:
parent
f1dd5ad23b
commit
3f6ea8fcfd
@ -37,6 +37,7 @@ $js = <<<EOJS
|
|||||||
var_dump(PHP.myarr.constructor.name);
|
var_dump(PHP.myarr.constructor.name);
|
||||||
var_dump(PHP.myarr.length);
|
var_dump(PHP.myarr.length);
|
||||||
var_dump(PHP.myarr[5]);
|
var_dump(PHP.myarr[5]);
|
||||||
|
var_dump(PHP.myarr.join(', '));
|
||||||
EOJS;
|
EOJS;
|
||||||
|
|
||||||
$v8 = new V8Js();
|
$v8 = new V8Js();
|
||||||
@ -48,7 +49,8 @@ $v8->executeString($js);
|
|||||||
--EXPECT--
|
--EXPECT--
|
||||||
int(20)
|
int(20)
|
||||||
int(14)
|
int(14)
|
||||||
string(11) "ArrayAccess"
|
string(5) "Array"
|
||||||
int(20)
|
int(20)
|
||||||
int(14)
|
int(14)
|
||||||
|
string(68) "19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0"
|
||||||
===EOF===
|
===EOF===
|
||||||
|
@ -956,10 +956,13 @@ static v8::Handle<v8::Value> php_v8js_array_access_to_jsobj(zval *value, v8::Iso
|
|||||||
inst_tpl->SetAccessor(V8JS_STR("length"), php_v8js_array_access_length);
|
inst_tpl->SetAccessor(V8JS_STR("length"), php_v8js_array_access_length);
|
||||||
inst_tpl->SetInternalFieldCount(1);
|
inst_tpl->SetInternalFieldCount(1);
|
||||||
|
|
||||||
|
|
||||||
v8::Handle<v8::Object> newobj = inst_tpl->NewInstance();
|
v8::Handle<v8::Object> newobj = inst_tpl->NewInstance();
|
||||||
newobj->SetAlignedPointerInInternalField(0, value);
|
newobj->SetAlignedPointerInInternalField(0, value);
|
||||||
|
|
||||||
|
/* Change prototype of `newobj' to that of Array */
|
||||||
|
v8::Local<v8::Array> arr = v8::Array::New(isolate);
|
||||||
|
newobj->SetPrototype(arr->GetPrototype());
|
||||||
|
|
||||||
return newobj;
|
return newobj;
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
Loading…
Reference in New Issue
Block a user