您可以使用用户定义的对象派生出Array.isArray()吗?
Can you fake out Array.isArray() with a user-defined object?
我很好奇是否有办法用用户定义的对象伪造出Array.isArray()
摘自《JavaScript Patterns:
》Array.isArray([]); // true
// trying to fool the check
// with an array-like object
Array.isArray({
length: 1,
"0": 1,
slice: function () {}
}); // false
这个对象显然失败了,但是还有其他方法吗?这纯粹是出于好奇,而不是因为我认为您可以在常规客户端代码中使用.isArray()
(尽管如果您可以的话,这显然是非常棒的!)。
仅当您将内部[[Class]]
属性设置为"Array"
时,这是不可能的。来自规范:
isArray
函数接受一个参数arg
,如果参数是一个类内部属性为"Array"的对象,则返回布尔值true
;否则返回false
。
或者反过来:创建一个普通数组并显式地将每个数组方法设置为undefined
。
Array.isArray = function () { return true; }
如果你想淘气
Array.isArray.toString = function () {
return 'function () { [native code] }';
};
相关文章:
- 如何为json对象中的段发送array[]
- Array.length似乎不起作用;console.log则显示其他情况
- 如何迭代Array.prototype函数
- Javascript 新的 Array 和 join() 方法
- Array.lenght = undefined
- Javascript setTimeout for an array
- NodeJS API调用中Array中的Push和Pull元素
- 如何在MongoDB中将String转换为Array
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 您的平台不支持RxJS-Array.observe
- 在Jquery/Javascript中的Array中插入Textbox值
- 通过jQueryAjax一起发布Array和Form数据时出现问题
- Array.every返回false,而不是类型error
- Javascript-通过i=0直接传递array[0]与array[0],array[i]在“;如果“;陈述
- 为什么我不能在 Array.isArray 上成功使用“call”
- 对于使用Object.create()创建的数组,Array.isArray()返回false
- 您可以使用用户定义的对象派生出Array.isArray()吗?
- Angular.isArray(data) returns false for an Array
- 在node.js中,为什么有一个util.isArray和一个Array.isArray
- 使用Array的区别.isArray和instanceof Array