JavaScript继承构造函数.prototype

JavaScript Inheritance constructor.prototype

本文关键字:prototype 构造函数 继承 JavaScript      更新时间:2023-09-26

我听不懂第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());

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

var proto = derive.prototype;

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

var constr = derive.prototype.constructor;