No. There are some cases where obj instanceof Array can be false, even if obj is an Array.

You do have to be careful with instanceof in some edge cases, though, particularly if you're writing a library and so have less control / knowledge of the environment in which it will be running. The issue is that if you're working in a multiple-window environment (frames, iframes), you might receive a Date d (for instance) from another window, in which case d instanceof Date will be false — because d's prototype is the Date.prototype in the other window, not the Date.prototype in the window where your code is running. And in most cases you don't care, you just want to know whether it has all the Date stuff on it so you can use it.

Source: Nifty Snippets

This example, applies to array objects too and so on.

And the standard method suggest by ECMAScript standards to find the class of an Object is to use the toString method from Object.prototype and isArray(variable) uses it internally.

Answer from levi on Stack Overflow
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Array › isArray
Array.isArray() - JavaScript - MDN Web Docs
Array.isArray() rejects values that aren't actual Array instances, even if they have Array.prototype in their prototype chain — instanceof Array would accept these as it does check the prototype chain.
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Operators › instanceof
instanceof - JavaScript - MDN Web Docs
July 8, 2025 - For instance, you can securely check if a given object is in fact an Array using Array.isArray(), neglecting which realm it comes from. For example, to check if a Node is an SVGElement in a different context, you can use myNode instanceof myNode.ownerDocument.defaultView.SVGElement.
🌐
HowToDoInJava
howtodoinjava.com › home › typescript › typescript instanceof with class, array and interface
TypeScript instanceof with Class, Array and Interface
April 15, 2024 - const numbers = [1, 2, 3]; console.log(numbers instanceof Array); // Output: true console.log(numbers instanceof Object); // Output: true · As we learned in the TypeScript Interface vs. Class, interfaces are only for abstraction and type checking, so they are discarded from the generated Javascript files.
🌐
JavaScript.info
javascript.info › tutorial › the javascript language › classes
Class checking: "instanceof"
September 26, 2025 - That’s because Array prototypically inherits from Object. Normally, instanceof examines the prototype chain for the check. We can also set a custom logic in the static method Symbol.hasInstance. The algorithm of obj instanceof Class works roughly as follows: If there’s a static method Symbol.hasInstance, then just call it: Class[Symbol.hasInstance](obj).
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › how-to-check-object-is-an-array-in-javascript
How to Check Object is an Array in JavaScript? - GeeksforGeeks
November 17, 2024 - ... function checkObject() { const ...g(checkArrayObj); } checkObject(); ... The instanceof operator tests whether an object is an instance of a specific constructor (in this case, Array)....
🌐
DEV Community
dev.to › akashkava › difference-between-instanceof-array-and-arrayisarray-4j7f
Difference between instanceOf Array and Array.isArray - DEV Community
October 18, 2021 - With Object.create, Array.prototype is present in prototype chain of a, so instanceOf Array will be true, as in the context of JavaScript, a has prototype of Array.
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Array › of
Array.of() - JavaScript - MDN Web Docs
July 10, 2025 - The Array.of() static method creates a new Array instance from a variable number of arguments, regardless of number or type of the arguments.
🌐
Esdiscuss
esdiscuss.org › topic › fixing-instanceof-array-isarray-etc
Fixing instanceof (Array.isArray() etc.)?
Array.isArray is OK for Array like objects so that we know that common operation are allowed while instanceof should act exactly as it does now so no confusion cross frame will be possible. Note: Array.isArray() in general returns false for array-like objects:
Find elsewhere
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › instanceof-operator-in-javascript
JavaScript Instanceof Operator - GeeksforGeeks
July 11, 2025 - <!DOCTYPE html> <html lang="en"> <head> <title> How to Check/Uncheck the checkbox using JavaScript ? </title> </head> <body> <h1 style="color:green"> GeeksforGeeks </h1> <h3> Instanceof Operator. </h3> <p id="GFG"></p> <script> let a = ["Geeks", "for", "Geeks"]; document.getElementById("GFG").innerHTML = (a instanceof Array) + "<br>" + (a instanceof Number); </script> </body> </html> Output: JavaScript Instanceof Operator ·
🌐
Flexiple
flexiple.com › javascript › instanceof-javascript
JavaScript instanceof operator: Syntax, Example & Explanation - Flexiple
March 11, 2022 - The JavaScript instanceof operator is used to check the type of an object at the run time. It returns a boolean value(true or false). If the returned value is true, then it indicates that the object is an instance of a particular class and if ...
🌐
30 Seconds of Code
30secondsofcode.org › home › javascript › type › array typechecking
Typechecking JavaScript arrays with Array.isArray() - 30 seconds of code
November 6, 2022 - let iframeEl = document.createElement('iframe'); document.body.appendChild(iframeEl); iframeArray = window.frames[window.frames.length - 1].Array; let array1 = new Array(1,1,1,1); let array2 = new iframeArray(1,1,1,1); console.log(array1 instanceof Array); // true console.log(Array.isArray(array1)); // true console.log(array2 instanceof Array); // false console.log(Array.isArray(array2)); // true
🌐
Dmitri Pavlutin
dmitripavlutin.com › is-array-javascript
3 Ways to Detect an Array in JavaScript - Dmitri Pavlutin
June 29, 2020 - Now emerges the next way to detect an array: value instanceof Array evaluates to true if value is an array.
🌐
CoreUI
coreui.io › blog › what-is-the-difference-between-typeof-and-instanceof-in-javascript
What is the difference between typeof and instanceof in JavaScript · CoreUI
September 17, 2024 - Note: Both arrays and objects return 'object' when using typeof. To differentiate between them, you might need additional checks. The instanceof operator checks if an object is an instance of a specific class or constructor function.
🌐
Codegive
codegive.com › blog › js_object_is_array.php
Is a JS Object an Array? Unravel the Truth & Master Type Checking in JavaScript (2024 Guide)
A: typeof [] returns "object" because, fundamentally, arrays in JavaScript are a specific type of object. The typeof operator identifies broad categories (primitives, functions, and objects), but doesn't differentiate between various kinds of objects like arrays, dates, or plain objects. Q: Is instanceof Array always reliable for checking if a js object is an array?
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › javascript-arrays
JavaScript Arrays - GeeksforGeeks
There are two methods by which we can recognize a JavaScript array: By using Array.isArray() method · By using instanceof method · Below is an example showing both approaches: JavaScript · const courses = ["HTML", "CSS", "Javascript"]; console.log("Using Array.isArray() method: ", Array.isArray(courses)) console.log("Using instanceof method: ", courses instanceof Array) Output ·
Published   October 3, 2025
🌐
MIT
web.mit.edu › jwalden › www › isArray.html
Determining whether a value is an array
The shared-mutation hazard of having arrays in two coordinating windows be instances of the same Array constructor, sharing the same Array.prototype, is enormous when either page augments Array.prototype (not to mention the security problems when one page is malicious!), so Array and Array.prototype in each window must be different. Therefore, by the semantics of instanceof, o instanceof Array works correctly only if o is an array created by that page's original Array constructor (or, equivalently, by use of an array literal in that page).
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › how-to-check-if-a-variable-is-an-array-in-javascript
How to Check if a Variable is an Array in JavaScript? - GeeksforGeeks
July 11, 2025 - Is Array: false Is Array: false Is Array: true · The JavaScript instanceof operator is used to test whether the prototype property of a constructor appears anywhere in the prototype chain of an object.
🌐
Stack Abuse
stackabuse.com › javascript-check-if-object-is-array
JavaScript: Check if Object is Array
March 9, 2023 - In this article, we looked at a few ways in JavaScript to determine if an object is an array. The easiest method is the Array.isArray() method that will most likely be used in production. However, we can always leverage the instanceof operator and other object properties to determine if it's an array.
🌐
Perfectionkills
perfectionkills.com › instanceof-considered-harmful-or-how-to-write-a-robust-isarray
instanceof considered harmful or how to write a robust isArray — Perfection Kills
January 10, 2009 - The problems arise when it comes to scripting in multi-frame DOM environments. In a nutshell, Array objects created within one iframe do not share [[Prototype]]’s with arrays created within another iframe. Their constructors are different objects and so both instanceof and constructor checks fail: