一个javascript闭包代码研究

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
	// 匿名外层函数
	(function( window, undefined ) {
		// 内层函数方法a
		var a = function(){
			alert("初始化开始");
			obj.constructor("参数", 1);
		}

		// 内层函数方法b
		var b = function(){
			return obj;
		}

		// 外层函数的局部变量
		obj = {
			type:0x01,
			open:function(){
				alert("open" + this.param + "," + this.num);
			},
			close:function(){
				alert("close" + this.param + "," + this.num);
			},
			constructor:function(param, num){
				this.param = param;
				this.num = num;
			}
		};

		window.a=a;
		window.b=b;
	})(window);

	function test(){
		var k = b();
		k.open();
		k.close();
	}
//-->
</SCRIPT>
 </HEAD>
 <BODY>
<INPUT TYPE="button" VALUE="test" ONCLICK="test();">

 </BODY>
 <script language="javascript" type="text/javascript">	
	a();
 </script>
</HTML>

 再一个一般例子:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 <script language="javascript" type="text/javascript">	
	function outer(){
		alert("outer");
		var i = 0;
		var inner = function(){
			i++;
			alert(i);
		};
	
		return inner;
	
	}

	var t = outer();
	t();
	t();
	t();
	t();

 </script>
 </HEAD>

 <BODY>
 <INPUT TYPE="button" VALUE="调用" ONCLICK="t();">
 </BODY>
</HTML>

 最后一个类似第一个例子:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 <script language="javascript" type="text/javascript">	
	(function (window){
		alert("outer");
		var i = 0;
		var inner = function(){
			i++;
			alert(i);
		};
		window.inner = inner;
	})(window);

	inner();
	inner();
	inner();

 </script>
 </HEAD>

 <BODY>
 <INPUT TYPE="button" VALUE="调用" ONCLICK="inner();">
 </BODY>
</HTML>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值