mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
12 years ago
|
/*===
|
||
|
{"quux":3,"foo":1}
|
||
|
0 quux
|
||
|
1 foo
|
||
|
2 baz
|
||
|
{"quux":3,"foo":1,"baz":4}
|
||
|
===*/
|
||
|
|
||
12 years ago
|
/* Should ancestor properties be enumerated when creating PropertyList?
|
||
12 years ago
|
* Specification is a bit unclear on this point. See E5.1 Section 15.12.3,
|
||
|
* main algorithm, step 4.b.ii.
|
||
|
*
|
||
|
* We currently iterate ancestor array indexed properties too.
|
||
|
*
|
||
|
* Creating an array instance with a chosen internal prototype is apparently
|
||
|
* not possible. However, Array.prototype is itself an array and we can add
|
||
|
* a value to it.
|
||
|
*/
|
||
|
|
||
|
function propertyListAncestorTest() {
|
||
|
var obj = { foo: 1, bar: 2, quux: 3, baz: 4 };
|
||
|
var k;
|
||
|
var plist;
|
||
|
|
||
|
// baseline
|
||
|
print(JSON.stringify(obj, [ 'quux', 'foo' ]));
|
||
|
|
||
|
// this is not very common
|
||
|
Array.prototype[2] = 'baz';
|
||
|
|
||
|
// plist will contain "0" and "1", and will inherit "2"
|
||
|
plist = [ 'quux', 'foo' ];
|
||
|
for (var k in plist) {
|
||
|
print(k, plist[k]);
|
||
|
}
|
||
|
|
||
|
// Now E5.1 Section 15.12.3, main algorithm, step 4.b.ii should presumably
|
||
|
// iterate indices "0" and "1" from the array and "2" from the ancestor.
|
||
|
// Note that 'length' plays no role in this.
|
||
|
//
|
||
|
// (Both Rhino and V8 fail this test.)
|
||
|
print(JSON.stringify(obj, plist));
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
propertyListAncestorTest();
|
||
|
} catch (e) {
|
||
|
print(e.name);
|
||
|
}
|
||
|
|