Используя прототип Javascript, как получить свойство экземпляра из другого свойства того же экземпляра? - PullRequest
0 голосов
/ 04 июля 2019

Используя прототип 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 Ответ

1 голос
/ 04 июля 2019

Просто:

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();
...