Bac*_*tnz 3 javascript jquery revealing-module-pattern
多年来我一直在积极使用揭示模块模式,但我想更深入地了解一些事情.根据我的理解,自动执行功能的潜在好处是无形和自我执行,这两者在这种特定模式中似乎没有必要/利用.我不明白的另一件事是,在下面的场景中可以将函数Init包装在SocialMedia函数()中,即嵌入函数,自执行函数似乎是JS中一个非常独特的构造,isn我们可以将属性值分配给自执行代码块,这有点奇怪吗?
var myObj = {
prop1, "prop1value",
SocialMedia: (function () {
function Init() {
}
return {
Init: Init
}
})()
}
Run Code Online (Sandbox Code Playgroud)
为什么我们在揭示模块模式中使用自执行功能?
JavaScript具有一流的功能,并且缺少块范围,因此函数用于引入新的范围.
在下面的场景中,什么可以将函数Init包装在SocialMedia函数()中,即嵌入函数...我们可以将属性值分配给自执行代码块并不奇怪吗?
在JavaScript中,函数只是响应()和new运算符的对象.
与其他对象一样,您可以在定义它时使用它,或将其存储在变量或属性中供以后使用.
自执行函数似乎是JS中一个非常独特的构造
这不是JavaScript独有的.具有第一类函数的所有语言都具有此属性,例如:
&),在最近的语言发展中,一流的功能是常态而不是规则.非静态类型语言只是简单易用,因为类型系统语法没有开销,也没有方差问题.
甚至Java也可能会与Lambdas一起争夺Java 8.
在许多其他语言中,立即调用函数并不是那么有用.大多数其他语言都是块范围的,所以如果你想让你的变量分开,你只需要使用一个{...}块.但是在JavaScript中,var范围限定为最小的包含function或程序,因此functions是引入新范围的最简单方法.
Ruby在块和函数之间做了很少的区分,因此在这方面可以认为类似于JS.