Чем отличаются эти два использования слова `$ this`? - PullRequest
0 голосов
/ 27 мая 2020

Я сейчас изучаю код AngularJS и заметил два разных использования $this в определении AngularJS factory:

module.factory('f_sys', function(...) {
  var $this = { data : { id: "123" } };

  ...

  function _updateSystem(d) {
    return $this.data.id == "123";  // (true)
  }

  $this.init = function() {
    ...
  }

  ...

  return $this;
});

Что здесь происходит? Добавляется ли функция init как еще один ключ к объекту var $this? Он обрабатывается так же, как и другая функция (например, _updateSystem)?

1 Ответ

1 голос
/ 28 мая 2020

init не похожа на другую функцию. Это как вы говорите: он становится свойством объекта $this. Таким образом, вы можете позвонить по номеру $this.init(), но чтобы позвонить по номеру _updateSystem, вы не можете написать $this._updateSystem(). И когда вы возвращаете $this вызывающему абоненту, вызывающий может позвонить init(), но не _updateSystem().

Конструкция $this такая же, как если бы вы записали его в одном присваивании:

var $this = { 
    data: { 
        id: "123" 
    }, 
    init: function() {
        /* ... */
    }
}

Или в более современном синтаксисе (ES6):

const $this = { 
    data: { 
        id: "123" 
    }, 
    init() {
        /* ... */
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...