[size=large]javascript比较出彩的运用之一:作用域链。
1、对于有洁癖的前台人员来说,全局变量就像长在美女脸上的黑斑,真的无法容忍。
2、《javascript权威指南》说的那样,javascript内部类嵌套越来越被广泛运用,是一种编码趋势。
所以我们用作用域链这种技巧来为我们的美人除斑吧。
下面举个例子,带点jQuery的色彩,不爽者可以将$和jQuery去掉,其实是一样地。
定义一个命名空间(典型的作用域链):[/size]
将所有的全局变量都放在一个js里面:
[size=large]以后在任何地方调用globalItem.doAction.send()之后,再调用globalItem.doAction.complete(),你就会发现,打印的item1
的值是1,而不是初始化的0;
这样做,省掉了item1这个全局变量,同时函数是全局变量的一个属性,不再是全局函数,
也相当于省掉了一个全局变量,并便于分类及管理。
[/size]
1、对于有洁癖的前台人员来说,全局变量就像长在美女脸上的黑斑,真的无法容忍。
2、《javascript权威指南》说的那样,javascript内部类嵌套越来越被广泛运用,是一种编码趋势。
所以我们用作用域链这种技巧来为我们的美人除斑吧。
下面举个例子,带点jQuery的色彩,不爽者可以将$和jQuery去掉,其实是一样地。
定义一个命名空间(典型的作用域链):[/size]
(function($)
{
var item1 = 0;
var item2 = 0;
globalItem.doAction={
send:function(){
item1 = 1;
},
complete:function(){
console.log(item1);
},
...
}
}(jQuery));
将所有的全局变量都放在一个js里面:
var globalItem = {};
...
[size=large]以后在任何地方调用globalItem.doAction.send()之后,再调用globalItem.doAction.complete(),你就会发现,打印的item1
的值是1,而不是初始化的0;
这样做,省掉了item1这个全局变量,同时函数是全局变量的一个属性,不再是全局函数,
也相当于省掉了一个全局变量,并便于分类及管理。
[/size]