instanceof最初遇到JavaScript时,该关键字可能会造成很大的混乱,因为人们倾向于认为JavaScript不是一种面向对象的编程语言。
- 它是什么?
- 它解决什么问题?
- 什么时候合适,什么时候不合适?
"foo" instanceof String=>假,1 instanceof Number=>假,{} instanceof Object=>假。说什么?!
"foo" instanceof String => false是正确的,因为typeof "foo" == 'string'。new String("foo") instanceof String => true,因为typeof String == 'function'-您应该将函数视为类(类的定义)。将其分配为时,变量变为instanceof某些function(类)var v = new AnythingWhatTypeofEqualsFunction()。同样适用于1。typeof 1 == 'number'- “号”是不是“功能” :)其次- {} instanceof Object是TRUE在节点和现代浏览器
({}) instanceof Object将返回true。实际上,您编写的代码会给您一个错误。