第二種方法創建函數作爲對象name
的成員。這會將它們封裝在name
之內,而不是在全局名稱空間內創建它們。由於使用全局名稱空間的方式,JavaScript在變量和函數命名方面可能非常成問題。例如,在函數內部聲明變量時忘記使用var
關鍵字會導致變量具有全局範圍而不是函數範圍。
因此,第二種方法允許您在全局級創建一個變量,並將其用作多個變量和函數的容器,而無需擔心與其他全局函數&變量名衝突。
一個常見的模式,你會看到(在道格拉斯Crockford的的Javascript建議:好的部分):
var myApplication = {
var1: 'some variable';
var2: 'some other variable';
var3: 12345
foo1: function() {
// do something
},
foo2: function() {
// do something else
}
};
實際上,我在這裏創建了全球唯一的變量是myApplication
,那就是不會導致與全局命名空間中的其他任何命名衝突。我可以打電話給我的功能,如:
myApplication.foo1();
myApplication.foo2();
有趣。 var1,var2和var3變量僅對封裝函數「全局」嗎?如果你想要「myApplication」的多個實例,比如它是一個類。所以你最終得到了如下結果: myApplication1.foo(); myApplication2.foo(); – SharpBarb
@SharpBob創建多個類實例,還有另一種使用構造函數創建對象的方法。不同的語法。查找有關示例的JavaScript類構造函數 –