首页 > 代码库 > instanceof不是根据构造函数进行判断,而是原型链

instanceof不是根据构造函数进行判断,而是原型链

 instanceof,A instanceof B 判断B.prototype对象能否在A的原型链上找到
function foo(){}
console.log(foo.__proto__); //foo.__proto__为Function.prototype,foo.__proto__.__proto__为Object.prototype
console.log(foo instanceof foo);//false
 
function foo(){
  return [1];
}
var a=new foo();
console.log(a); //[1]
console.log(a instanceof foo);//false
 
function foo(){
  return this;
}
var a=new foo();
console.log(a); //a类型为Object
console.log(a instanceof foo);//true
 
function foo(){
  return foo;
}
var a=new foo();
console.log(a); //a类型为Function
console.log(a instanceof foo);//false

技术分享

instanceof不是根据构造函数进行判断,而是原型链