1
與Javascript中的變量一樣使用對象屬性的缺點是什麼?這是否不會添加(有效)命名空間級別?javascript vs namespacing中的變量
var myProp = something;
VS
var myObj = {};
myObj.myProp = something;
與Javascript中的變量一樣使用對象屬性的缺點是什麼?這是否不會添加(有效)命名空間級別?javascript vs namespacing中的變量
var myProp = something;
VS
var myObj = {};
myObj.myProp = something;
其實這是很常見的「模塊」來包裝代碼,並使用對象作爲一種命名空間的。例如:
var fooModule = (function(){
var private = 3;
var privateMethod = function(){};
var exports = {};
exports.foo = function(){
alert("I am public! Private is: " + private);
}
return exports
});
alert(private); // throws an error
fooModule.foo(); //works
對象成本更高:這是一個屬性查找比沒有對象更多。然而,命名空間的好處(尤其是在全球範圍內)遠遠超過了這一點。 – Bergi
我根本不會考慮命名空間的缺點。實際上,它建議在JS中避免名稱衝突 - 例如,請參閱http://www.kenneth-truyers.net/2013/04/27/javascript-namespaces-and-modules/。或http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/ – ElmoVanKielmo
@ElmoVanKielmo:但是,請參閱[保存對內置方法的引用的好處](http:// stackoverflow。 com/q/7488235/1048572)(以及類似的東西) – Bergi