我很好奇是否有任何方法可以伪造出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 次 |
最近记录: |