首页 > 技术文章 > instanceof不是根据构造函数进行判断,而是原型链

lee1993 2017-03-29 20:27 原文

 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

推荐阅读