Javascript доступ к открытым методам из других открытых методов (тот же объект)

javascript object methods

42 просмотра

3 ответа

У меня есть следующий JS-объект:

var obj = function(){
   this.var1 = "var1";

   this.getvar1 = function(){
       return this.var1;
   }
   this.call1 = function(){
       this.getvar1();
   }
}
  • все методы должны быть публичными
  • все объекты должны быть публичными

Проблема:

Если я пытаюсь вызвать открытый метод объекта obj из другого открытого метода объекта obj, ключевое слово this ссылается на сам открытый метод, а не на объект.

Есть ли способ обойти это?

Автор: simplywing Источник Размещён: 08.11.2019 11:11

Ответы (3)


0 плюса

Решение

Вы можете назначить thisпеременную ( self) и использовать это:

var obj = function(){
   var self = this;
   self.var1 = "var1";

   self.getvar1 = function(){
       return self.var1;
   }
   self.call1 = function(){
       self.getvar1();
   }
}
Автор: Arun Ghosh Размещён: 20.08.2016 10:39

0 плюса

Вы просто забыли вернуться из call1. Добавьте returnи все будет работать как положено:

var obj = function() {
   this.var1 = "var1";

   this.getvar1 = function() {
       return this.var1;
   }
   
   this.call1 = function() {
       return this.getvar1();
   }
}

var a = new obj()
console.log( a.call1() )

Автор: dfsq Размещён: 20.08.2016 10:37

0 плюса

Может быть, вы имели в виду это:

const obj = {
  var1: 'var1'
 ,getvar1() {
    return this.var1
  }
 ,call1() {
    return this.getvar1()
  }
}

console.log(obj.call1())

Автор: Michał Perłakowski Размещён: 20.08.2016 10:40
Вопросы из категории :
32x32