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
?
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With