【发布时间】:2015-08-20 22:30:20
【问题描述】:
通常当我们使用“new”关键字创建一个新对象时,实际上创建的对象的__proto__属性指向父类的prototype属性。我们可以如下测试:
function myfunc(){};
myfunc.prototype.name="myfunction";
var child= new myfunc();
child.__proto__=== myfunc.prototype ---> true
但是让我们看看当我改变父函数的原型时会发生什么:
myfunc.prototype={};
child.__proto__=== myfunc.prototype ---> false
child.name ------> "myfunction"
如果 child.__proto__ 没有指向 myfunc.prototype,那么它在对象链中指向哪里?更重要的是,如果它不指向 myfunc.prototype,那么它如何访问 myfunc 类的 "name" 属性?
【问题讨论】:
-
child在被替换之前仍在引用原始的prototype对象。实例不指向其构造函数的prototype属性;他们使用自己的[[Prototype]]属性(__proto__是其获取器/设置器)引用对象本身。 -
好的。它现在指向哪里?现在应该有一个 child.__proto__ 指向的对象。
-
@Achrome 我已经读过这个问题数百万次了
标签: javascript oop prototype