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();
}