【发布时间】:2015-08-23 14:32:57
【问题描述】:
var Person = function () { this.bar = 'bar' };
Person.prototype.foo = 'foo'; //proto as property
var Chef = function () { this.goo = 'goo' };
Chef.prototype = new Person();
var cody = function () { this.goo = 'goo' };
cody.prototype = new Chef();
var a = new cody();
对 JavaScript 原型很困惑
a.__proto__ why is it Chef{goo:"goo"} and not cody{}
a.constructor.prototype why is it Person {foo: "foo"} and not Chef{goo:"goo"}
a.constructor why is it function Person() and not function cody()
有人能解释一下这些问题,并建议一个链接来研究 JavaScript 中的多级继承吗?
【问题讨论】:
-
constructor属性继承自构造函数的prototype。如果你替换了prototype,你就会删除那个constructor。如果constructor没有按预期工作,请不要感到惊讶。 -
看起来你是从一个具有奇怪继承的旧教程中学习 JavaScript 的。就个人而言,我从 Codecademy 学到了这种继承,但这不是 JavaScript 继承应该如何工作的。
-
@NobleMushtak 顺便说一句,我从 JavaScript 简洁地学习了这种继承风格,这是学习 JavaScript 的绝佳资源,但感谢您的建议,我会尝试从您的链接中更好地理解它。
-
我强烈推荐this。
标签: javascript inheritance prototype