WEB开发网
开发学院网页设计JavaScript 使用JavaScript 对Cookie 操作的封装 阅读

使用JavaScript 对Cookie 操作的封装

 2010-01-08 00:00:00 来源:WEB开发网   
核心提示: 闭包产生的原因是因为作用域的不同,子作用域引用了父作用域的变量,而返回子作用域,父作用域按理来说执行完毕后该销毁掉了,只是子作用域一直存在,且一直握有父作用域的引用,所以才一直保留.来看下面的代码1functionparent(){2vara=1;3functionchild(){4varb=2

闭包产生的原因是因为作用域的不同,子作用域引用了父作用域的变量,而返回子作用域,父作用域按理来说执行完毕后该销毁掉了,只是子作用域一直存在,且一直握有父作用域的引用,所以才一直保留.

来看下面的代码

1 function parent() {
2     var a = 1;
3     function child(){
4         var b = 2;
5         alert(a);
6         alert(b);
7     }
8 }

父函数 parent 中包含了一个 child 子函数,在子函数中有一个对父函数中 a 变量的引用(输出其值).

我们来让父函数执行完后返回其声明的子函数

 1 function parent() {
 2     var a = 1;
 3     function child(){
 4         var b = 2;
 5         alert(a);
 6         alert(b);
 7     }
 8     return child;
 9 }
10 var t = parent();
11 t();

在10行中, 我们执行了parent 函数,返回了在函数内部声明的函数 child,这时变量 t 持有该返回对象(此时是一个可以执行的函数)的引用,在11行代码中我们调用了它.结果分别输出了 1 和 2.

注意,输出 2, 是因为我们在子函数体内声明了一个变量,而输出 1, 我们在该函数体内并没有相应的定义变量 a ,而是发生了对父函数里的变量的引用,也就是说引用了父作用域的变量.

而此时又能能够完成输出的,也就是说变量 a 还存在.可是我们无法直接对其引用 (比如 parent.a),因为函数已经执行完毕,没有了其相应的引用,我们只能通过所返回的子函数的引用来进行访问.

上一页  1 2 3 4  下一页

Tags:使用 JavaScript Cookie

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接