假设我有 core.js
var ajax = function(){};
var something = function(){super};
var globalconstant = 5;
var someutilitymodule = {
onekey: something;
twokey: something;
}
如果我将其包含在我的文件中<script src="core.js">
1)我污染了全局命名空间
2)可能[替换/被替换]另一个变量。
但是不会让它成为一个对象解决问题吗?即我像这样制作core.js
core =
{
ajax : function(){},
something : function(){super},
globalconstant : 5,
someutilitymodule = {
onekey: something;
twokey: something;
}
}
这种方法的根本问题是什么?是因为在创建完整对象之前您无法访问其他项目吗?像例如core = {a:"Foo" , b:a}
不会工作?但是我可以通过
core = {};
core.a="Foo";
core.b=core.a;
如果我们对闭包不感兴趣,为什么还要进入 IIFE(立即调用函数表达式)?对于 Javascript 中的“模块命名空间”,不介意在不同的命名空间中公开所有内容,这种方法不会工作并在 Javascript 中创建模块效果吗?
是否有任何指针可以阅读更多内容?我知道它有点含糊,但我对 IIFE requirejs 等这个概念很陌生。所以试着从新手的角度去理解。