オブジェクトと自己実行匿名関数を使用して名前空間を作成することを検討しています。どちらがより良い選択肢と考えられていますか?
オブジェクトを使用して、競合を防ぐのに十分な一意の名前「myAppName」を付けていますか?
var myAppName = {
val1: "abc",
val2: "xyz",
myFunc1: function() {
return this.val2;
}
}
console.log(myAppName.val1); // abc
console.log(myAppName.myFunc1()); // xyz
自己実行匿名関数の使用:
(function () {
val1 = "abc";
var val2 = "xyz";
myFunc1 = function() {
return val1;
}
var myFunc2 = function() {
return val2;
}
})();
console.log(val1); // abc
console.log(myFunc1()); // abc
console.log(myFunc2()); // xyz
上記の自己実行関数のコードでは、それらはすべて実行されているようです。変数名や関数名の前に var を付けたり付けなかったりすることに意味はありますか? よくわかりません。変数と関数をプライベートおよびパブリックにする方法はありますか? それとも、自己実行関数内のすべてがプライベートですか?
以下のように自己実行関数の前に「var」を使用するとどうなりますか?
var myAppName = (function () {
val1 = "abc";
var val2 = "xyz";
myFunc1 = function() {
return val1;
}
var myFunc2 = function() {
return val2;
}
})();