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
/*
|
|
* 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);
|
|
}
|
|
|