Source code
Revision control
Copy as Markdown
Other Tools
var proxy = new Proxy(function() {}, {
getOwnPropertyDescriptor(target, name) {
assertEq(name, "length");
return {value: 3, configurable: true};
},
get(target, name) {
if (name == "length")
return 3;
if (name == "name")
return "hello world";
assertEq(false, true);
}
})
var bound = Function.prototype.bind.call(proxy);
assertEq(bound.name, "bound hello world");
assertEq(bound.length, 3);
var fun = function() {};
Object.defineProperty(fun, "name", {value: 1337});
Object.defineProperty(fun, "length", {value: "15"});
bound = fun.bind();
assertEq(bound.name, "bound ");
assertEq(bound.length, 0);
Object.defineProperty(fun, "length", {value: Number.MAX_SAFE_INTEGER});
bound = fun.bind();
assertEq(bound.length, Number.MAX_SAFE_INTEGER);
Object.defineProperty(fun, "length", {value: -100});
bound = fun.bind();
assertEq(bound.length, 0);
fun = function f(a, ...b) { };
assertEq(fun.length, 1);
bound = fun.bind();
assertEq(bound.length, 1);
reportCompare(0, 0, 'ok');