我很好奇是否有任何方法可以伪造出Array.isArray()用户定义的对象.
从JavaScript模式书:
Array.isArray([]); // true
// trying to fool the check
// with an array-like object
Array.isArray({
length: 1,
"0": 1,
slice: function () {}
}); // false
Run Code Online (Sandbox Code Playgroud)
那个对象显然失败了,但还有其他办法吗?这纯粹是好奇心,并不是因为我认为你可以用.isArray()普通的客户端代码搞定(尽管知道你是否可以,这显然很棒!).
Ray*_*nos 10
Array.isArray = function () { return true; }
如果你想变得顽皮
Array.isArray.toString = function () {
return 'function () { [native code] }';
};
Run Code Online (Sandbox Code Playgroud)
仅当您将内部[[Class]]属性设置为"Array",这是不可能的afaik.从规格:
该
isArray函数接受一个参数arg,true如果参数是类内部属性为"Array"的对象,则返回布尔值; 否则它会返回false.
或者你反过来:创建一个普通数组并显式设置每个数组方法undefined.
| 归档时间: |
|
| 查看次数: |
499 次 |
| 最近记录: |