Search code examples
javascriptinstanceof

Understanding instanceof with JavaScript


I have a basic understanding of instanceof in JavaScript, testing if the left hand side object "is of" the right hand side object type. The following 2 examples help me understand that...

var demo1 = function() {};
demo1.prototype = {
foo: "hello"
};

var demo2 = function() {
var pub = {
    bar:"world"
};
return this.pub;
};

var obj1 = new demo1();
var obj2 = new demo2();

console.log(obj1 instanceof demo1);  //returns true
console.log(obj2 instanceof demo2);  //returns true

But on this 3rd example, I get false and I don't understand why....

var o = {}; // new Object;
o.toString(); // [object Object]
console.log(o instanceof toString); //returns false

Thanks for any help in understanding whats going on. Also...is is possible to make the 3rd example true?

Thanks again


Solution

  • o is an object; toString is a function. They are different types in JavaScript.

    alert(typeof(o));  //"object"
    alert(typeof(toString)); //"function"
    

    JavaScript makes a distinction between objects and functions. Therefore, that's why you get false returned in your example.