function foo(){};function bar(){ return{ method: function(){} };};foo.prototype = new bar();console.log(foo.prototype instanceof bar);//false为什么上面的判断返回false?我自己试了一下,如果把bar()里面的return内容去掉就返回true,请教一下大神们为什么?function foo(){};function bar(){};foo.prototype = new bar();console.log(foo.prototype instanceof bar);//true
3 回答
互换的青春
TA贡献1797条经验 获得超6个赞
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
补充一下,楼主要去深入理解一下instanceof 具体是通过什么来判断,上面的笔试题可以简化为:
function bar(){
return{
method: function(){}
}
};
console.log( new bar() instanceof bar);
或者
console.log( {method: function(){}} instanceof bar);
instanceof的本质是什么呢? a instanceof b 就等价于 myInstanceof( a, b)
function myInstanceof( obj , fn ){
var getPrototypeOf =Object.getPrototypeOf;
var proto=obj ;
while(getPrototypeOf && getPrototypeOf(proto)||proto.__proto__){
if( proto === fn.prototype ){
return true;
}
}
return false;
}
添加回答
举报
0/150
提交
取消