Javascript OOP半循环继承

时间:2015-09-09 20:23:15

标签: javascript oop inheritance

我尝试以更清洁的方式解决我遇到以下问题:

我有两个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);
    };
}

提前谢谢! (对不起英文,这不是我的第一语言)

0 个答案:

没有答案