javascript - 这个 JavaScript 模式是怎么回事?

标签 javascript coffeescript

我看到了这个模式:

Money = (function() {
    function Money(rawString) {
        this.cents = this.parseCents(rawString);
    }
});

在此CoffeeScript screencast preview 。 (截屏视频的主页是here。)

现在,我不明白这种模式。有一个 Money 函数包含一个 Money 函数。那是关于什么的?

有人能解释一下吗?

最佳答案

正如所引用的,除了可以从 window 对象中删除外部 Money 符号之外,该模式没有任何意义(IE7 及更低版本除外,但这是另一个问题)故事),因为它是 window 的普通(隐式)属性(而不是 var 或从函数声明派生的符号)。但即便如此,外部的 Money 符号接收的函数绝对不执行任何操作。会不会被错误引用?

例如,这是一个相当标准的模式:

Money = (function() {
    var someCompletelyPrivateVariable;

    function doSomethingCompletelyPrivate() {
    }

    function Money(rawString) {
        this.cents = this.parseCents(rawString);
    }

    return Money;
})();

这就是模块模式,它让您拥有完全私有(private)的变量和函数(均如图所示),同时只有一个公共(public)符号。但我必须进行相当多的编辑才能创建它(最重要的编辑是末尾的 return Money; 以及在匿名函数之后添加 ()所以我们调用它而不是仅仅定义它。

关于javascript - 这个 JavaScript 模式是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998179/

相关文章:

javascript - 从父级 JavaScript 访问跨域 IFrame DOM 属性

javascript - Coffeescript/Javascript 变量作用域

javascript - 使用 JavaScript 单击后更改图像

javascript - 使用 jQuery 更新表

node.js - 如何将字符串转换为可读流?

javascript - 将javascript中的字符串更改为对象

regex - 空格和哈希 (#) 作为 coffeescript 正则表达式导致错误?

node.js - 返回发送给Hubot的原始消息

javascript - ng-pattern 允许单词之间有空格

javascript - 如何根据字段的值过滤对象数组并重新映射对象?