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 pagination插件实现无刷新分页代码
Oct 13 Javascript
基于jquery的blockui插件显示弹出层
Apr 14 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
JavaScript中document.forms[0]与getElementByName区别
Jan 21 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
JS中的==运算: [''] == false —>true
Jul 24 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python lambda表达式用法实例分析
2018/12/25 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
财务经理的岗位职责
2013/12/17 职场文书
外贸专业求职信
2014/03/09 职场文书
小学运动会班级口号
2014/06/09 职场文书
通知函的格式
2015/04/27 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
5个实用的JavaScript新特性
2022/06/16 Javascript