JS命名空間
衆所周知一個頁面可能會被很多人開發,那麼這時候就有一個問題,那就是命名的重複(變量,函數名),所以爲了解決這個問題,命名空間就應用而生了。
可以先看如下代碼:
var org = {
groupA:{
tom:{
name:"abc",
sex:"man"
},
jerry:{
name:"cde",
age:'18'
}
},groupB{
zhangWuji:{
name:'xxx',
sex:'woman'
}
}
}
org.groupA.jerry.name
那麼此時可以發現,如果要使用某個變量,那麼要層層調用,但是這回很麻煩,所以爲了更好的使用變量,可以使用臨時變量來代替,如下:
var jName = org.groupA.jerry.name
但是這也不是解決問題的根本,所以爲了根本解決這個問題,就要用到閉包
var init =(function () {
var name = "zsf";
function sayName() {
console.log(name);
}
function saySex() {
console.log("man");
}
return function () {
sayName();
saySex();
}
}())
var x = init();
此時把一個要在全局執行的變量放到了一個局部裏面,所以避免了命名衝突而造成的代碼污染。
另外一種解決方法就是使用with
var name = '222';
var a = {
name:'111',
say:function () {
console.log(this.name);
}
}
var b ={
name:'333',
say:function (fun) {
console.log(this.name);
}
}
with(a){
say();
}