我有充当基类的函数,我想向它添加方法。我可以通过名称(函数外部)或不引用函数名称(函数内部)将方法添加到函数原型:
1) 参考名称
Base.prototype.getResult = function () {
return 5;
}
2)不要引用名称
function Base() {
this.constructor.prototype.getResult = function () {
return 5;
}
}
我很好奇这两种方法有什么区别(有什么影响)?
编辑:更新了我的问题以包含Jacob Krall对此提出的建议的示例:
这意味着在构造Base.prototype.getResult
第一个对象之前将是未定义的(因此,例如,在第一个对象之后Base
,您不能在不同类型的对象上调用它)已创建Base.getResult.apply(this)
Base
function Base() {
this.constructor.prototype.getResult3 = function () {
return alert(this.variable);
}
}
Base.prototype.getResult2 = function () {
return alert(this.variable);
}
var o = {
"variable":5
};
Base.prototype.getResult2.call(o); //works
try {
Base.prototype.getResult3.call(o); //doesn't work
} catch(e) {
alert('exception is catched');
}
var base = new Base();
base.getResult3.call(o); //works