2014-06-24 20 views
1

與Javascript中的變量一樣使用對象屬性的缺點是什麼?這是否不會添加(有效)命名空間級別?javascript vs namespacing中的變量

var myProp = something; 

VS

var myObj = {}; 

myObj.myProp = something; 
+1

對象成本更高:這是一個屬性查找比沒有對象更多。然而,命名空間的好處(尤其是在全球範圍內)遠遠超過了這一點。 – Bergi

+0

我根本不會考慮命名空間的缺點。實際上,它建議在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

+0

@ElmoVanKielmo:但是,請參閱[保存對內置方法的引用的好處](http:// stackoverflow。 com/q/7488235/1048572)(以及類似的東西) – Bergi

回答

0

其實這是很常見的「模塊」來包裝代碼,並使用對象作爲一種命名空間的。例如:

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