以下のコードでは、宣言された2つのオブジェクトがあり、1つのオブジェクトが別のオブジェクトのプロパティと関数を継承しています。関数のメソッドを返す
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