Javascript 为什么不是';在实施活动时,生活是否用于隐私?

Javascript 为什么不是';在实施活动时,生活是否用于隐私?,javascript,backbone.js,Javascript,Backbone.js,在中,存储事件时,此约定用于表示私有变量: _events 然而,正如我们所知,这一财产在很大程度上不是私有的。为什么不做一些像这样的事情,使它真正的私人 var Events = (function () { var publik = {}, events = {}, // private object literal eventsApi, // private method triggerEvents;

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

_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);

否则,这是一个惯例问题

按照惯例,人们不会让事情变得艰难。使用一个简单的函数,没有生命,如果人们迫切需要,让他们处理你的“私有”变量

您是否曾经因为库隐藏了它的变量而不得不更改库的代码?嗯,当它发生的时候真的很痛苦。拥有可用的变量,即使它们“按惯例是私有的”,也是一个真正的好处

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


[0]:可以说,但很明显,一个Javascript是基于这些特定情况的。

封装并不是人们所说的那么重要。我们都是同意的成年人。仅仅因为图书馆让你改变你知道你不应该改变的东西,并不意味着你应该改变。我不打算改变它——从来没有说过我会。我在问为什么不把它保密。它还添加了封装(可视类型),而不是两个“浮动”函数定义。我不是在责怪你什么,别担心:)我只是说将其私有化并不是什么大问题。“_uu”惯例的意思是“它就在那里,如果你绝对确定你知道你在做什么,就用它,但你不应该”我不知道这里的评论中的焦虑来自哪里,但我相信它不会再次发生,来自任何相关方。我不知道这里的评论中的焦虑来自哪里,但我相信这不会再发生了,无论涉及哪一方。另外,这个答案上最初的图像是。。。不合适。