2

主干中,当存储事件时,此约定用于表示私有变量:

_events

然而,正如我们所知,这个财产在很大程度上不是私人的。为什么不做这样的事情来让它真正私密呢?

var Events = (function () {
    var publik = {},
        events = {},      // private object literal
        eventsApi,        // private method
        triggerEvents;    // private method

    // define publik Events methods here

    return publik;
})();

_.extend(Backbone, Events);
4

1 回答 1

6

否则,这是一个约定俗成的问题。

惯例是人们不会让它变得困难。使用一个简单的函数,没有 IIFE,如果他们迫切需要,让人们弄乱你的“私有”变量。

你有没有因为这个库隐藏了它的变量而不得不改变一个库的代码?好吧,当它发生时,它是一个真正的痛苦。让变量可用,即使它们是“按惯例私有的”,也是一个真正的好处。

作为参考,[Common Lisp][0] 默认所有变量都是私有的。您可以手动导出一些。但是你总是可以使用特殊的语法来访问私有变量,从而清楚地表明代码正在做它不应该做的事情(与“未定义的行为”相混淆)。

[0]:可以说是最强大的语言,但显然是基于一种 Javascript。

于 2013-03-19T21:13:14.180 回答