作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到了这个模式:
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/
我是一名优秀的程序员,十分优秀!