在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/