var A = {
method1 : function(){
// do some thing
},
method2 : function(){
// do some thing
}
};
var B = {
method1 : function(){
// overriden
}
};
如何覆盖?
B.extend(B, A);
或
B.merge(A);
什么是正确的方法?
答案 0 :(得分:1)
好吧,你扩展了类/对象。
我会看一下jQuery扩展。 http://api.jquery.com/jQuery.extend/
可以轻松地扩展您的类/对象。
示例:
var A = {
methode1: function(){
// Do something
}
methode2: function(){
// Do something else
}
}
var B = {
methode1: function() {
// Do something different then A.methode1
}
}
var object = $.extend(true, A, B);
答案 1 :(得分:1)
一种方法是创建一个具有B
所有属性并继承自A
的新对象。
E.g。
function extend(B, A) {
var Constr = function() {
for(var prop in B) {
if(B.hasOwnProperty(prop)) {
this[prop] = B[prop];
}
}
};
Constr.prototype = A;
return new Constr();
}
然后你可以这样做:
B = extend({
method1 : function(){
// overriden
}
}, A);
A
的方法没有改变,你不需要外部库;)
答案 2 :(得分:0)
在目前的形式中,我看不出B
与对象A
有什么关系[所以不存在覆盖的问题]。
如果你真的想要继承继承:
var B = A
B.method1 = function() {
// overriding
}
这样,调用B.method2()
会获得A's
方法,而method1()
会被B's
版本覆盖。