2

我正在尝试扩展一个对象,并且我想修改第一个方法,而不是覆盖它。我不认为这很清楚,所以这里有一个例子:

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

有没有办法做到这一点?

4

1 回答 1

3

Javascript使用原型继承,所以你可以让object2继承object1的属性和方法

object2.prototype=object1;

这意味着object2将继承object1的所有属性和方法,任何被覆盖的方法都可以在object2.prototype.method()

soparent::whatever();相当于this.prototype.whatever();从 object2 的范围调用时。


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"
于 2012-06-06T22:23:44.357 回答