Можно ли инициализировать объект в JavaScript таким образом? - PullRequest
4 голосов
/ 15 мая 2010

Я хотел бы инициализировать объект в javascript, напрямую вызывая принадлежащий ему метод:

  var obj = (function(){
      return{
          init: function(){
              console.log("initialized!");
              return this;
          },
          uninit: function(x){
              console.log("uninitialized!");
          }
      };
  }).init();

  //later
  obj.uninit();
  obj.init();

Этот конкретный пример не работает, есть что-то похожее?

1 Ответ

7 голосов
/ 15 мая 2010

РЕДАКТИРОВАТЬ: init() возвращает this, спасибо Guffa.

Вы определяете только анонимную функцию, но фактически не вызываете ее. Чтобы позвонить сразу, добавьте пару скобок:

var obj = (function(){
  return{
      init: function(){
          console.log("initialized!");
          return this;
      },
      uninit: function(x){
          console.log("uninitialized!");
      }
  };
})().init();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...