Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以用用户定义的对象伪造Array.isArray()吗?_Javascript - Fatal编程技术网

Javascript 可以用用户定义的对象伪造Array.isArray()吗?

Javascript 可以用用户定义的对象伪造Array.isArray()吗?,javascript,Javascript,我很好奇是否有办法用用户定义的对象伪造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 这个对象显然失败了,但还有其他方法吗?这纯粹是好奇,并不是因为我认

我很好奇是否有办法用用户定义的对象伪造
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
这个对象显然失败了,但还有其他方法吗?这纯粹是好奇,并不是因为我认为您可以在常规客户端代码中使用
.isArray()

仅当您将设置为
“Array”
时,这是不可能的。从:

isArray
函数接受一个参数
arg
,如果参数是类内部属性为“Array”的对象,则返回布尔值
true
;否则它将返回
false


或者反过来:创建一个普通数组,并显式地将每个数组方法设置为
undefined

array.isArray=function(){return true;}

如果你想调皮的话

Array.isArray.toString = function () { 
  return 'function () { [native code] }';
};

现在你提示我问一个后续问题: