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 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
js客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
js动态修改整个页面样式达到换肤效果
May 23 Javascript
JavaScrip调试技巧之断点调试
Oct 22 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
Javascript同时声明一连串(多个)变量的方法
Jan 23 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
jQuery事件委托代码实践详解
Jun 21 jQuery
JS对日期操作封装代码实例
Nov 08 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通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
5.1手机促销活动
2014/01/17 职场文书
大学生活自我评价
2014/04/09 职场文书
三字经教学反思
2014/04/26 职场文书
应届生自荐书
2014/06/23 职场文书
贷款担保书
2015/01/20 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
Python实现聚类K-means算法详解
2022/07/15 Python