【发布时间】:2015-10-03 12:49:07
【问题描述】:
当我在MDN阅读原型继承时,我发现了这段代码sn-p。
function B(a, b){ }
B.prototype = Object.create(A.prototype, {});
B.prototype.constructor = B;
var b = new B();
为简单起见,我删除了函数的内部内容。这里B.prototype.constructor 被分配给B,一旦它被创建。为什么这样做,prototype.constructor 在原型链中的作用是什么。我发现了这个SO 问题,一个答案是
在赋值后重置构造函数是一个好习惯。
我想对此有一个很好的解释,以及在原型链中对此有何影响。在MDNObject.prototype.constructor 中解释为
返回对创建实例原型的 Object 函数的引用。
我已经尝试了以下
function A(name) {
this.name = name
}
function B() {
this.getName = function(){
console.log('hello');
}
}
var b = new B();
这里b.constructor 是function A(name) 并且b.__proto__.constructor 中还有另一个可用的构造函数,两者都是相同的。这两者有什么区别。现在当我执行以下B.prototype.constructor == B 时,b.constructor 是function B()
现在我从b创建了一个新对象
var c = Object.create(b)
那么这将如何影响原型链。
非常感谢任何帮助。提前致谢。
【问题讨论】:
标签: javascript prototype