синтаксис за съставяне на обекти в javascript

В следния код искам да мога да извикам bindClickEvents() така:

App.Utils.Modal.bindClickEvents();

Не разбирам обаче синтаксиса, необходим за това.

Текущ код:

var App = new Object;

App.Modal = {
  bindClickEvents: function() {
    return $('a.alert-modal').click(function(e) {
      return console.log('Alert Callback');
    });
  }
};

$(document).ready(function() {
  return App.Modal.bindClickEvents();
});

person keruilin    schedule 06.01.2012    source източник
comment
Винаги използвайте {} вместо new Object   -  person Alex Wayne    schedule 06.01.2012
comment
защо е така, ако нямате нищо против да попитам?   -  person keruilin    schedule 06.01.2012
comment
Вижте този въпрос: stackoverflow.com/questions/251402/   -  person Alex Wayne    schedule 06.01.2012


Отговори (3)


Можете да го направите наведнъж:

var App = {
  Modal : {
    bindClickEvents : function () {/* ... */}
  }
}

или ако искате да разделите това на отделни стъпки:

var App = {};
App.Modal = {};
Modal.bindClickEvents = function () {/* ... */};

Между другото, във връзка с първоначалното ви заглавие на въпроса, това не е верижно свързване на обекти. Това е обектна композиция. Верижното свързване на обекти е възможността да извиквате методи в обект няколко пъти в един оператор.

person slebetman    schedule 06.01.2012

Това ли се опитваш да направиш?

var App = {};

App.Utils = {};

App.Utils.Modal = {
  bindClickEvents: function() {
    return $('a.alert-modal').click(function(e) {
      return console.log('Alert Callback');
    });
  }
};

$(document).ready(function() {
  return App.Utils.Modal.bindClickEvents();
});
person Dagg Nabbit    schedule 06.01.2012
comment
Предполагам, че OP не е всъщност искала Utils обект там :-) - person Adam Rackis; 06.01.2012

Предпочитайте синтаксиса на литерала на обекта пред конструктора на обекта; някои автори стигат дотам, че наричат ​​последното антимодел

Ето най-простия начин да настроите App.Utils.Modal.bindClickEvents();

var App = {
      Utils: {
           Modal: {
               bindClickEvents: function() {
                    return $('a.alert-modal').click(function(e) {
                        return console.log('Alert Callback');
                    });
               }
           }
      }
 };

Или можете да го сглобите стъпка по стъпка:

var App = {};
App.Utils = {};
App.Utils.Modal = {};
App.Utils.Modal.bindClickEvents = function() {
    return $('a.alert-modal').click(function(e) {
      return console.log('Alert Callback');
    });
};
person Adam Rackis    schedule 06.01.2012