Сделать переменные объекта доступными во всех "более глубоких" областях

Я в настоящее время кодирую своего рода плагин в JS. Я только что узнал об объектах, и меня отчасти раздражает тот факт, что я не могу получить доступ к переменным, установленным в конструкторе, на два или более уровня выше. Вот что я имею в виду:

    var myConstructor = function()
    {
        this.one = "one";
        this.two = "two";

        this.publicMethod = function()
        {
          console.log("I can access: ", this.one);
          var privateMethod = function()
          {
              console.log("I cannot access var two like this: ", this.two);
          };
          privateMethod();
        };
    };

var myObject =  new myConstructor();
myObject.one = 1;
myObject.two = 2;
myObject.publicMethod();

Итак, как я мог сделать privateMethod получить доступ к переменным, которые установлены в конструкторе? Точно так же, как publicMethod this сделать это. Это возможно? Большое спасибо.

1 ответ

Решение

Попробуй это.

 var myConstructor = function()
        {
            this.one = "one";
            this.two = "two";

            this.publicMethod = function()
            {
                // new variable
                _two = this.two;
                console.log("I can access: ", this.one);
                var privateMethod = function()
                {
                    console.log("I cannot access var two like this: ", _two);
                };
                privateMethod();
            };
         };
Другие вопросы по тегам