为什么“ instanceof”会产生不同的结果?

时间:2019-02-23 11:58:25

标签: javascript prototype instanceof

为什么instanceof运算符在以下两段代码中产生不同的结果,它在后台如何工作?

1>

function MyConstructor() {}
MyConstructor.prototype = {};
var myobject = new MyConstructor();

myobject instanceof MyConstructor 
**true**

2>现在,如果我执行以下代码,结果将有所不同:

MyConstructor.prototype = {};
myobject instanceof MyConstructor 

**false**

您能解释一下运算符实例如何工作。我了解原型继承如何在javascript中工作,但我无法理解此场景。

1 个答案:

答案 0 :(得分:2)

  

instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何地方。

因此,如果您重新分配原型,myobject的原型将不会===到(新的)MyConstructor.prototype,因此instanceof会解析为{{1 }}。

false