Jquery:扩展对象以修改方法

时间:2012-06-06 22:08:18

标签: javascript jquery oop

我正在尝试扩展一个对象,我想修改第一个方法,而不是覆盖它。我不认为这是明确的,所以这是一个例子:

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 methodsecond object method

有办法做到这一点吗?

1 个答案:

答案 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"