一、探索 instanceof
1.instanceof是如何判断的?
A instanceof B
//如果B函数的现实原型对象在A对象的原型链上,返回true,否则返回false
//Object作为实例对象,它的隐式原型指向的是构造函数的的原型,也就是Function prototype。Function作为构造函数,它的显示原型指向的是Function prototype;
console.log(Object instanceof Function);//true;
//Object作为构造函数,它的显示原型是Object.prototype,Object作为实例对象,它的隐式原型是一个Function prototype,而Function protype的隐式原型是Object.prototype,所以二者相等。
console.log(Object instanceof Object);//true;
//我们知道Function =new Function();也就是说明Function的隐式原型和Function的显示原型都是同一个。这里的Function既是构造函数也是实例对象。
console.log(Function instanceof Funtion );//true;
//Function作为实例对象,它的直接隐式原型是Function.prototype,但是Function.prototype的隐式原型是Object.prototype。而Object作为函数的显示原型也是Object.prototype。
console.log(Function instanceof Object);//true
//Object作为实例对象它的隐式原型第一步是Function.prototype,第二步是Object.prototype,第三步是null。而foo作为构造函数,它的显示原型是Foo prototype,所以二者是不等的。
console.log(Object instanceof foo);