【问题标题】:JavaScript Inheritance constructor.prototypeJavaScript 继承构造函数.prototype
【发布时间】:2015-02-07 10:07:19
【问题描述】:

我无法理解第 4 行。
如果我写像derive.constructor.prototype
将发生错误。

还有,base.apply(derive, baseArgs); 是什么?
我以为我可以像base(baseArg) 那样做,但我做不到。

function initializeBase(derive, base, baseArgs) {
  base.apply(derive, baseArgs);
  for(var prop in base.prototype) {
    var proto = derive.constructor.prototype;
    if(!proto[prop]) {
      proto[prop] = base.prototype[prop];
    }
  }
}

var Member = function(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
};

Member.prototype.getName = function() {
    return this.firstName + ' ' + this.lastName;
};

var SpecialMember = function(firstName, lastName, role) {
    initializeBase(this, Member, [firstName, lastName]);

    this.role = role;
};

SpecialMember.prototype.isAdministrator = function() {
    return (this.role == 'Administrator');
};

var mem = new SpecialMember('Kotaro', 'Hayafune', 'Administrator');
document.writeln('Name: ' + mem.getName() + '<br>');
document.writeln('Administrator: ' + mem.isAdministrator());

【问题讨论】:

  • 你从哪里得到 initializeBase 函数?

标签: javascript oop inheritance prototype


【解决方案1】:

不确定你的变量在这里包含什么,但通常如果你想要你会写的原型:

var proto = derive.prototype;

如果你想要构造函数,你会写:

var constr = derive.prototype.constructor;

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2014-09-02
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多