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


Posted in Javascript onJuly 04, 2013

扩展
Code:

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

Say:
将自身传进方法,然后实现了方法的扩展,有点象零件组装啊
Code:
var blogModule = (function (my) {var oldAddPhotoMethod = my.AddPhoto;
 my.AddPhoto = function () {  // 重载方法,依然可通过oldAddPhotoMethod调用旧的方 }; return my;}(blogModule));

Say:
好处就是可以调用以前的方法。
克隆与继承
Code:
var blogModule = (function (old) { var my = {}, key; for (key in old) { if (old.hasOwnProperty(key)) { my[key] = old[key]; } } var oldAddPhotoMethod = old.AddPhoto; my.AddPhoto = function () { // 克隆以后,进行了重写,当然也可以继续调用oldAddPhotoMethod }; return my; } (blogModule));

Say:
简单的克隆实现
跨文件共享私有对象
Code:
var blogModule = (function (my) { var _private = my._private = my._private || {}, _seal = my._seal = my._seal || function () { delete my._private; delete my._seal; delete my._unseal; }, _unseal = my._unseal = my._unseal || function () { my._private = _private; my._seal = _seal; my._unseal = _unseal; }; return my; } (blogModule || {}));

Say:
blogModule._seal()上锁,_unseal() 开锁,实现内部变量的私有化。我认为这样实现并不是最好的,但是我们可以学习下这个开锁闭锁的功能。
Javascript 相关文章推荐
初窥JQuery(二)事件机制(2)
Dec 06 Javascript
THREE.JS入门教程(3)着色器-下
Jan 24 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
详解angularjs结合pagination插件实现分页功能
Feb 10 Javascript
基于ES6作用域和解构赋值详解
Nov 03 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
Jul 04 #Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 #Javascript
JS实现简单的Canvas画图实例
Jul 04 #Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 #Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 #Javascript
JS定时刷新页面及跳转页面的方法
Jul 04 #Javascript
浏览器打开层自动缓慢展开收缩实例代码
Jul 04 #Javascript
You might like
最小化数据传输――在客户端存储数据
2006/10/09 PHP
一个域名查询的程序
2006/10/09 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
微信小程序实现选项卡功能
2020/06/19 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python分割和拼接字符串
2013/11/01 Python
Python深入学习之内存管理
2014/08/31 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Python模块 _winreg操作注册表
2020/02/05 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
学历公证委托书
2014/04/09 职场文书
销售员岗位职责
2015/02/10 职场文书
个人先进事迹总结
2015/02/26 职场文书
创业计划书之水果店
2019/07/18 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL