Can I use `obj.constructor === Array` to test if object is Array?
arrays, javascript, prototype, types
Solution
Depends, there are a few scenarios where it can return a different value, but `Array.isArray` will work.
The `Array` object for one window is not the the same `Array` object in another window.
var obj = someIframe.contentWindow.someArray;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true
The `constructor` property can be overwritten.
var obj = [];
obj.constructor = null;
console.log(obj.constructor === Array);//false
console.log(Array.isArray(obj));//true
Another object can also set the `constructor` property to `Array`.
var obj = {};
obj.constructor = Array;
console.log(obj.constructor === Array);//true
console.log(Array.isArray(obj));//false
Problem
Is it correct to use `obj.constructor === Array` to test if an object is an array as suggested here? Does it always returns correct answer compatible with `Array.isArray`?