| /* Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ */ |
| |
| // Reflect.has is identical to the `in` operator. |
| assertEq(Reflect.has({x: 0}, "x"), true); |
| assertEq(Reflect.has({x: 0}, "y"), false); |
| assertEq(Reflect.has({x: 0}, "toString"), true); |
| |
| // The target can be an array; Reflect.has works on array elements. |
| var arr = ["zero"]; |
| arr[10000] = 0; |
| assertEq(Reflect.has(arr, "10000"), true); |
| assertEq(Reflect.has(arr, 10000), true); |
| assertEq(Reflect.has(arr, "-0"), false); |
| assertEq(Reflect.has(arr, -0), true); |
| |
| // And string objects (though not string primitives; see target.js). |
| var str = new String("hello"); |
| assertEq(Reflect.has(str, "4"), true); |
| assertEq(Reflect.has(str, "-0"), false); |
| assertEq(Reflect.has(str, -0), true); |
| |
| // Proxy without .has() handler method |
| var obj = {get prop() {}}; |
| for (var i = 0; i < 2; i++) { |
| obj = new Proxy(obj, {}); |
| assertEq(Reflect.has(obj, "prop"), true); |
| assertEq(Reflect.has(obj, "nope"), false); |
| } |
| |
| // Proxy with .has() handler method |
| obj = new Proxy({}, { |
| has(t, k) { return k.startsWith("door"); } |
| }); |
| assertEq(Reflect.has(obj, "doorbell"), true); |
| assertEq(Reflect.has(obj, "dormitory"), false); |
| |
| |
| // For more Reflect.has tests, see target.js and propertyKeys.js. |
| |
| reportCompare(0, 0); |