我可以使用`obj.constructor === Array`来测试对象是否是数组?

时间:2015-02-12 00:34:31

标签: javascript arrays types prototype

使用obj.constructor === Array测试对象是否为建议的here数组是否正确?是否始终返回与Array.isArray兼容的正确答案?

1 个答案:

答案 0 :(得分:7)

取决于某些情况,它可以返回不同的值,但Array.isArray会起作用。

一个窗口的Array对象与另一个窗口中的Array对象不同。

var obj = someIframe.contentWindow.someArray;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true

constructor属性可以被覆盖。

var obj = [];
obj.constructor = null;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true

另一个对象也可以将constructor属性设置为Array

var obj = {};
obj.constructor = Array;
console.log(obj.constructor === Array);//true
console.log(Array.isArray(obj));//false