summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/proxy/bug-862848-1.js
blob: 870b5632c35a4577fc6e0bb44029b705b3b2144e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// obj.hasOwnProperty(id), Object.getOwnPropertyDescriptor(obj, id), and
// Object.defineProperty(obj, id, desc) do not look at obj's prototype.

var angryHandler = new Proxy({}, {
    has: () => true,
    get: (t, id) => {
        throw new Error("angryHandler should not be queried (" + id + ")");
    }
});
var angryProto = new Proxy({}, angryHandler);

var obj = Object.create(angryProto, {
    // Define hasOwnProperty directly on obj since we are poisoning its
    // prototype chain.
    hasOwnProperty: {
        value: Object.prototype.hasOwnProperty
    }
});

assertEq(Object.getOwnPropertyDescriptor(obj, "foo"), undefined);
assertEq(obj.hasOwnProperty("foo"), false);
Object.defineProperty(obj, "foo", {value: 5});
assertEq(obj.hasOwnProperty("foo"), true);
assertEq(obj.foo, 5);