0

下面的两种方法在主干.js的顶级范围内。但是它们仅用于 Backbone.Events。

为什么不将它们作为属性包含在传递给 Backbone.Events 的对象文字中,就像其他方法一样?

这是为了让它们保持私密性并脱离用户 API 吗?

// only used in Backbone.Events
eventsApi = function(obj, action, name, rest) {
    // internals
};
// only used in Backbone.Events
triggerEvents = function(events, args) {
    // internals
};
4

1 回答 1

2

这是为了让它们保持私密性并脱离用户 API 吗?

我会说是的。它的显示模块模式。

var myModule = (function() {
  var privateFn = function() { ... };

  return {
    publicFn: function() {
      return privateFn();
    }
  };
}());

或通过主干使用术语:

(function(){

  // other backbone code

  var eventsApi = function() { ... };
  var Events = Backbone.Events = {
    on: function() {
      // code...
      var whatever = eventsApi(some, args);
      // code...
    }
  };

  // other backbone code

}());

现在Events.Backbone.on是一个可以调用该函数的函数eventsApi,即使该eventsApi函数没有公开。

于 2013-02-04T00:24:43.853 回答