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

Can I use `obj.constructor === Array` to test if object is Array?

使用 obj.constructor === Array 来测试一个对象是否是建议的数组 here 是否正确?它总是 returns 与 Array.isArray 兼容的正确答案吗?

视情况而定,在某些情况下它可以 return 不同的值,但 Array.isArray 会起作用。

一个 window 的 Array 对象与另一个 window 中的 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