使用Javascript原型,如何从同一实例的另一个属性获取实例属性?

时间:2019-07-04 11:08:12

标签: javascript prototype javascript-objects prototypal-inheritance

使用Javascript原型,如何从同一实例的另一个属性获取实例属性?

我正在尝试从Main.prototype.a方法中调用Main.prototype.b方法。

我设法通过在init上添加Main.prototype.b方法来解决此问题,该方法接受一个instance变量并将其保存为this.instance,以后可以用来引用该变量。其他方法中的实例。

然后在传递init作为变量的同时,从Main构造函数调用this方法,但是我感觉缺少一种更优雅,更简单的解决方案。

这只是我试图理解的一个非常简单的示例:

var Main = function(){}

Main.prototype.a = {
    value: 1,
    one: function(){
        this.value++;
        console.log("added 1", this.value);
    },
    two: function(){
        this.value--;
        console.log("reduced 1", this.value);
    },
    three: function(){
        this.value+=10;
        console.log("added 10", this.value);
    }
}

Main.prototype.b = {
    one: function(){
        //call Main.prototype.a.one
    },
    two: function(){
        //call Main.prototype.a.two
    },
    three: function(){
        //call Main.prototype.a.three
    },
    getValue: function(){
        //return Main.prototype.a.variable
    }
}

var main = new Main();

感谢您抽出宝贵时间阅读所有提前提供解决方案的人员!

1 个答案:

答案 0 :(得分:1)

简单地:

var Main = function(){}

Main.prototype.a = {
    value: 1,
    one: function(){
        this.value++;
        console.log("added 1", this.value);
    },
    two: function(){
        this.value--;
        console.log("reduced 1", this.value);
    },
    three: function(){
        this.value+=10;
        console.log("added 10", this.value);
    }
}

Main.prototype.b = {
    one: function(){
      Main.prototype.a.one();
    },
    two: function(){
        //call Main.prototype.a.two
    },
    three: function(){
        //call Main.prototype.a.three
    },
    getValue: function(){
        //return Main.prototype.a.variable
    }
}

var main = new Main();
main.b.one();
main.b.one();