为什么instanceof运算符在以下两段代码中产生不同的结果,它在后台如何工作?
1>
function MyConstructor() {}
MyConstructor.prototype = {};
var myobject = new MyConstructor();
myobject instanceof MyConstructor
**true**
2>现在,如果我执行以下代码,结果将有所不同:
MyConstructor.prototype = {};
myobject instanceof MyConstructor
**false**
您能解释一下运算符实例如何工作。我了解原型继承如何在javascript中工作,但我无法理解此场景。
答案 0 :(得分:2)
instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何地方。
因此,如果您重新分配原型,myobject
的原型将不会===
到(新的)MyConstructor.prototype
,因此instanceof
会解析为{{1 }}。
false