The JavaScript exception "invalid 'instanceof' operand" occurs when the right hand side operands of the
instanceof
operator
isn't used with a constructor object, i.e. an object which has a
prototype
property and is callable.
TypeError: invalid 'instanceof' operand "x" (Firefox) TypeError: "x" is not a function (Firefox) TypeError: Right-hand side of 'instanceof' is not an object (Chrome) TypeError: Right-hand side of 'instanceof' is not callable (Chrome)
instanceof
operator
expects the right hand side operands to be a constructor object, i.e. an object which has a
prototype
property and is callable.
"test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
42 instanceof 0; // TypeError: invalid 'instanceof' operand 0
function Foo() {}
var f = Foo(); // Foo() is called and returns undefined
var x = new Foo();
x instanceof f; // TypeError: invalid 'instanceof' operand f
x instanceof x; // TypeError: x is not a function
To fix these errors, you will either need to replace the
instanceof
operator
with the
typeof
operator
, or to make sure you use the function name, instead of the result of its evaluation.
typeof "test" == "string"; // true
typeof 42 == "number" // true
function Foo() {}
var f = Foo; // Do not call Foo.
var x = new Foo();
x instanceof f; // true
x instanceof Foo; // true