javascript - 为什么在实现事件时不使用 IIFE 来保护隐私?

标签 javascript backbone.js

backbone ,当存储事件时,这个约定用于表示一个私有(private)变量:

_events

但是,正如我们所知,此属性非常不私有(private)。为什么不做这样的事情让它真正私密呢?

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

最佳答案

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

惯例是人们不会让它变得困难。使用一个简单的函数,不使用 IIFE,并让人们在迫切需要时弄乱您的“私有(private)”变量。

您是否曾经因为这个库隐藏了它的变量而不得不更改库的代码?好吧,当它发生时真的很痛苦。让变量可用,即使它们是“按照约定私有(private)的”,也是一个真正的好处。

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

[0]:可以说是the most powerful language , 但显然一个 Javascript 是基于。

关于javascript - 为什么在实现事件时不使用 IIFE 来保护隐私?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510127/

相关文章:

c# - 在按下回车键时触发 ASP.NET TextBox 事件

javascript - 如何在 css flexbox 下方写一些东西

javascript - 如何使用jquery连续垂直滚动图像

Javascript UTC 时区始终为负数

javascript - 如何使用 d3.time.scale 为一天中的每一小时和一周中的每一天创建标签

javascript - Backbone动态切换模板

javascript - 页面仅在刷新后加载 CSS 和 JavaScript

javascript - 重置 Backbone 集合绑定(bind)功能

javascript - 无法将 html 插入 jQuery 对象

javascript - Backbone.history.navigate 不保存参数