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

Ali*_*iba 4 javascript arrays types prototype

obj.constructor === Array用于测试对象是否为此处建议的数组是否正确?是否总能返回与之兼容的正确答案Array.isArray

Ale*_*ara 7

取决于,有一些场景可以返回不同的值,但Array.isArray会起作用.

Array一个窗口的对象不是Array另一个窗口中的同一对象.

var obj = someIframe.contentWindow.someArray;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true
Run Code Online (Sandbox Code Playgroud)

constructor属性可以被覆盖.

var obj = [];
obj.constructor = null;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true
Run Code Online (Sandbox Code Playgroud)

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

var obj = {};
obj.constructor = Array;
console.log(obj.constructor === Array);//true
console.log(Array.isArray(obj));//false
Run Code Online (Sandbox Code Playgroud)