在下面的代码中,我已经声明了两个对象,其中一个对象继承了另一个对象的属性和功能。返回函数的方法
我想使用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