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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
JavaScript中链式调用之研习
Apr 07 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
Feb 20 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 Javascript
vue cli 3.x 项目部署到 github pages的方法
Apr 17 Javascript
微信小程序入门之绘制时钟
Oct 22 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
用PHP读取IMAP邮件
2006/10/09 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
js实现下一页页码效果
2017/03/07 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
vue使用Google地图的实现示例代码
2018/12/19 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
Python中不同进制的语法及转换方法分析
2016/07/27 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
python实现邮件发送功能
2019/08/10 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
热爱祖国的演讲稿
2014/05/04 职场文书
给校长的建议书500字
2014/05/15 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
英语导游欢迎词
2015/09/30 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书