2015-02-07 73 views
0

我不能理解线4
如果我写这样derive.constructor.prototype
会发生错误。JavaScript的继承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()); 
+0

你从哪里获得'initializeBase'函数? – Bergi 2015-02-07 10:21:20

回答

0

不知道你的变量,这里包含但通常如果你想原型你可以这样写:

var proto = derive.prototype; 

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

var constr = derive.prototype.constructor;