在下面的代碼中,我已經聲明瞭兩個對象,其中一個對象繼承了另一個對象的屬性和功能。返回函數的方法
我想使用super
變量來調用我繼承的對象的方法。當我追溯到itemEditor
時,我可以正確地看到函數和方法。當我嘗試訪問itemEditor
的方法時,它返回undefined
。
我在做什麼錯?有一個更好的方法嗎?
var myObject = {
itemEditor : function (vars) {
this.editItem = function() {
alert("Editing Item");
}
},
recurringItemEditor : function (vars) {
myObject .itemEditor.apply(this, [vars]);
this.prototype = myObject.itemEditor.prototype;
var super = myObject.itemEditor
this.editItem = function() {
console.log("fn.recurringItemEditor.editItem");
console.log(super);
console.log(super.editItem);
super.editItem.call(this);
}
}
正是這樣的代碼給JavaScript一個壞名字。只是因爲JS允許您執行運行時注入,並不意味着必須刻意設計代碼以使其難以閱讀。我相信有一種優雅的方式可以完成你想要做的事情。從一張乾淨的紙張開始。 – RHT