| /* Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ */ |
| |
| // Deleting .length from a variety of builtin functions works as expected. |
| for (var fun of [Math.sin, Array.prototype.map, eval]) { |
| assertEq(delete fun.length, true); |
| assertEq(fun.hasOwnProperty("length"), false); |
| assertEq("length" in fun, true); // still inheriting Function.prototype.length |
| assertEq(fun.length, 0); |
| |
| // The inherited property is nonwritable, so assigning still fails |
| // (silently, in sloppy mode). |
| fun.length = Math.hypot; |
| assertEq(fun.length, 0); |
| |
| // It can be shadowed via defineProperty. |
| Object.defineProperty(fun, "length", {value: Math.hypot}); |
| assertEq(fun.length, Math.hypot); |
| } |
| |
| reportCompare(0, 0, 'ok'); |