// Base class
var Base = function() {
this._value = 'base';
};
Base.prototype = {
constructor: Base,
// By function
getValue: function() {
return this._value;
},
// By getter
get value() {
return this._value;
}
};
// Sub class extends Base
var Sub = function() {
this._value = 'sub';
};
Sub.prototype = {
constructor: Sub
};
// Pass over methods
Sub.prototype.getValue = Base.prototype.getValue;
Sub.prototype.value = Base.prototype.value;
// ---
var mySub = new Sub();
alert(mySub.getValue()); // Returns 'sub'
alert(mySub.value); // Returns 'undefined'
乍一看似乎mySub.value应返回相同的mySub.getValue(),但你可以看到它,而不是返回undefined。显然,getter没有找到父范围作为子实例(mySub),而是一个不存在的Base实例。复制的JavaScript getter/setter方法到另一个原型对象
有没有解决这个其他任何方式比具有相同的干将分配到新的原型?
我知道这并不能回答你的问题......但为什么你甚至需要吸气剂?这不是不必要的复杂性吗? – 2011-05-18 04:00:35
@Micheal没有。 – Kayla 2011-05-18 04:12:18
@Michael在这个例子中,显然这是没有必要的,我只是写了一个清楚的概念来说明我面临的问题。 在我的实际应用中,获取/设置特定的属性我需要触发等功能,并且代码时。 – 2011-05-18 04:20:56