zl程序教程

您现在的位置是:首页 >  前端

当前栏目

javascript闭包的高级使用方法实例

JavaScript实例方法 使用 高级 闭包
2023-06-13 09:15:03 时间
扩展
Code:
复制代码代码如下:

varblogModule=(function(my){
 my.AddPhoto=function(){
//添加内部代码
 };
 returnmy;
}(blogModule));

Say:
将自身传进方法,然后实现了方法的扩展,有点象零件组装啊
Code:
复制代码代码如下:

varblogModule=(function(my){varoldAddPhotoMethod=my.AddPhoto;
 my.AddPhoto=function(){ //重载方法,依然可通过oldAddPhotoMethod调用旧的方};returnmy;}(blogModule));

Say:
好处就是可以调用以前的方法。
克隆与继承
Code:
复制代码代码如下:
varblogModule=(function(old){varmy={},key;for(keyinold){if(old.hasOwnProperty(key)){my[key]=old[key];}}varoldAddPhotoMethod=old.AddPhoto;my.AddPhoto=function(){//克隆以后,进行了重写,当然也可以继续调用oldAddPhotoMethod};returnmy;}(blogModule));

Say:
简单的克隆实现
跨文件共享私有对象
Code:
复制代码代码如下:
varblogModule=(function(my){var_private=my._private=my._private||{},_seal=my._seal=my._seal||function(){deletemy._private;deletemy._seal;deletemy._unseal;},_unseal=my._unseal=my._unseal||function(){my._private=_private;my._seal=_seal;my._unseal=_unseal;};returnmy;}(blogModule||{}));

Say:
blogModule._seal()上锁,_unseal()开锁,实现内部变量的私有化。我认为这样实现并不是最好的,但是我们可以学习下这个开锁闭锁的功能。