javascript重写方法
如何覆盖javascript重写方法,javascript,Javascript,如何覆盖 var A = { method1 : function(){ // do some thing }, method2 : function(){ // do some thing } }; var B = { method1 : function(){ // overriden } }; 或 什么是正确的方法?在它目前的形式中,我看不出B与对象A有任何关系[因此不存在重写的问题] 如果你真的想继承一些东西: B.me
var A = {
method1 : function(){
// do some thing
},
method2 : function(){
// do some thing
}
};
var B = {
method1 : function(){
// overriden
}
};
或
什么是正确的方法?在它目前的形式中,我看不出
B
与对象A
有任何关系[因此不存在重写的问题]
如果你真的想继承一些东西:
B.merge(A);
因此,调用
B.method2()
会得到A的方法,而method1()
会被B的版本覆盖。好吧,您可以扩展类/对象
我将看一看jQuery扩展。
可以轻松地使用它来扩展类/对象
例如:
var B = A
B.method1 = function() {
// overriding
}
一种方法是创建一个具有B
所有属性并从a
继承的新对象
例如
然后你可以做:
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();
}
A
的方法不变,您不需要外部库;)
谢谢你的建议,如果按照你的方式,我总是会包括一个,但我不想要。试着想象一下,如果有50个函数需要重写,会发生什么情况:(.我想把它们放在一个object中,但是我有一个问题。使a.method1等于B.method1。对不起,我来自java背景,在那里扩展类而不是对象;)。但它用于扩展javascript中的“对象”。
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);
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);