我正在尝试扩展一个对象,我想修改第一个方法,而不是覆盖它。我不认为这是明确的,所以这是一个例子:
var object1 = {
whatever : function(){
console.log('first object method');
}
}
var object2 = {
whatever : function(){
console.log('second object method');
}
}
var object = $.extend(true, object1, object2);
object.whatever();
此示例将输出second object method
,但我想要的是它输出first object method
和second object method
。
有办法做到这一点吗?
答案 0 :(得分:3)
Javascript使用原型继承,因此您可以通过执行
使object2继承object1的属性和方法object2.prototype=object1;
这意味着object2将继承object1的所有属性和方法,并且可以在object2.prototype.method()
因此,当从object2的范围调用时,parent::whatever();
相当于this.prototype.whatever();
。
var object1 = {
whatever : function(){
console.log('first object method');
}
}
var object2 = {
whatever : function(){
console.log('second object method');
this.prototype.whatever(); // Equivalent to parent::whatever();
}
}
object2.prototype=object1; // Makes object2 inherit object1's properties and methods
object2.whatever(); // "second object method" "first object method"