var obj = {};
typeof obj; // returns "object"
obj instanceof Object // return true
typeof null // returns "object"
null instanceof Object // returns false
And how about
typeof undefined // return "undefined"
undefined instanceof undefined
// ERROR: Uncaught TypeError: Expecting a function in instanceof check,
// but got undefined
Why is this the case? I have read a lot about related topics on SO but still can't get this.
Understand that 'typeof' would return a String, so it pretty much reflects the rules in Javascript.(eg. null is a object... well fine..) But why "null instanceof Object" return false ?
"x instanceof y"
Does it mean 'x' has to be created by the 'y' constructor? And for null this is not the case ?
EDIT
Would really appreciate if you could explain the different intention behind instanceof and typeof otherthan then syntax and return value.
Difference between null and undefined
typeof null // object (bug in ECMAScript, should be null)
typeof undefined // undefined
null === undefined // false
null == undefined // true
REF
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…