js中函数中的instanceof
instanceof的使用
- 表达式: A instanceof B
A(有隐式原型)是实例对象,B(有显式原型)是构造函数- 如果B函数的显式原型对象在A对象的原型链上, 返回true, 否则返回false
instanceof具体案例1
function Foo() { }
var f1 = new Foo()
console.log(f1 instanceof Foo) // true f1找一次找到Foo
console.log(f1 instanceof Object) // true f1找两次 第一次找到Foo 第二次找到Object
只要在构造函数在实例对象原型链上的任意一个环节都返回true
instanceof具体案例2
console.log(Object instanceof Function) // true 即 object = new Function 下图红粗线
console.log(Object instanceof Object) // true 下图黄粗线
console.log(Function instanceof Function) // true 下图蓝粗线
console.log(Function instanceof Object) // true 下图绿粗线
function Foo() {}
console.log(Object instanceof Foo) // false 下图黑粗线 可见不经过object的隐性原型链 所以为false
Function是通过new自己产生的实例
利用同样的方法进行分析: