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.
52 lines
1.2 KiB
52 lines
1.2 KiB
11 years ago
|
/*
|
||
|
* Test case analogous to test-bug-array-proto-protected-1.js but for Object.
|
||
|
* Object literals should use [[DefineOwnProperty]] which allows writing an
|
||
|
* own property regardless of what is present in the parent.
|
||
|
*/
|
||
|
|
||
|
/*===
|
||
|
defineProperty success
|
||
|
inherit undefined
|
||
|
foo bar
|
||
|
inherit bar
|
||
|
shouldsucceed bar
|
||
|
===*/
|
||
|
|
||
|
function test() {
|
||
|
var obj;
|
||
|
|
||
|
Object.defineProperty(Object.prototype,
|
||
|
'prop1',
|
||
|
{
|
||
|
value: 'inherit',
|
||
|
writable: false,
|
||
|
enumerable: true,
|
||
|
configurable: true
|
||
|
});
|
||
|
print('defineProperty success');
|
||
|
|
||
|
// No problem here
|
||
|
obj = {};
|
||
|
print(obj.prop1, obj.prop2);
|
||
|
|
||
|
// Again should succeed
|
||
|
obj = { prop1: 'foo', prop2: 'bar' };
|
||
|
print(obj.prop1, obj.prop2);
|
||
|
|
||
|
// Assignment should not work unless an own property already exists
|
||
|
obj = {};
|
||
|
obj.prop1 = 'foo'; // failure is silent
|
||
|
obj.prop2 = 'bar';
|
||
|
print(obj.prop1, obj.prop2);
|
||
|
|
||
|
obj = { prop1: 'foo', prop2: 'bar' };
|
||
|
obj.prop1 = 'shouldsucceed';
|
||
|
print(obj.prop1, obj.prop2);
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
test();
|
||
|
} catch (e) {
|
||
|
print(e);
|
||
|
}
|