我尝试以更清洁的方式解决我遇到以下问题:
我有两个A和B类,其中A继承自B. 我想要的是当我通过类A调用类B的方法时,我得到一个新的B实例,然后执行该方法,并保留实例A的继承。
请注意,B的方法必须返回'这个'用于链接。
示例:
var classA = new class A();
classA.setName("John");
var result1 = classA.methodOfClassB().otherMethodOfClassB();
var result2 = classA.methodOfClassB().otherMethodOfClassB();
var result3 = result1.otherMethodOfClassB();
console.log(result1 === result2); //false
console.log(result1 === result3); //true
//Call a method of class A from class B
console.log(result1.methodOfClassAGetName()); //John
console.log(result1.methodOfClassAGetName()); //John
我的实施
function classA() {
var self = this;
self.methAclassA = function() {
/* ... */
console.log(this.methAclassB());
};
classB.call(self, true);
return (self);
}
function classB(isNew) {
var self = this;
var _getNewInstance = function() {
var instance = new classB(false);
instance.__proto__ = self;
return (instance);
};
self.methAclassB = function() {
if (isNew) {
return (_getNewInstance().methAclassB());
}
/* ... */
return (self);
};
}
提前谢谢! (对不起英文,这不是我的第一语言)