是否有更好的方法來合併兩個對象並調用父函數?使用jQuery進行JavaScript繼承 - 調用父函數
var a = {
a:1,
myFunction:function(){
console.info("a");
}
}
var b = {
b:2,
myFunction:function(){
console.info("b");
this.callParent();
}
}
var obj = {};
$.extend(obj, a);
$.extend(obj, b);
b = obj;
b.superclass = a;
包裹的所有功能,以便 「this.callParent」 是本
function wrap(func, parent) {
return function() {
this.callParent = parent;
var result = func.apply(this, arguments);
return (this.callParent), result;
};
}
與迭代如:
$.each(b, function(key, value){
if(typeof value == "function" && b.superclass && b.superclass[key]){
b[key] = wrap(value, b.superclass[key]);
}
});
具有輸出 「B - >一個」:
b.myFunction();
'$ .extend()jQuery的一般和;'不會在JavaScript中與遺傳有關。所有'.extend()'都會合並2個對象,它對'prototype'或'prototype.constructor'不是很在意,也不會將'$ .extend(objA,objB)''objA instanceof objB'真正。說*使用jQuery *繼承JavaScript是非常具有誤導性的。 – Nope