JS实现self的resend


Posted in Javascript onJuly 22, 2010

ECMA V5定义了一个期待已久的方法:Object.getPrototypeOf,它可以无视型别信息得到某对象的原型([[prototype]]),基于此,我们可以构造出一个resend:(请用Chrome 5、IE9预览第三版测试)

obj.resend = function() { 
var pof = Object.getPrototypeOf; 
var has = function() {......} // hasOwnProperty的封装 
var make = function(obj, old) { 
return function(name, args) { 
var step = pof(obj), 
r; 
while (step && !has(step, name)) step = pof(step); 
if (!step) throw new Error('Unable to resend: method missing'); var foundMethod = step[name]; 
var backup = arguments.callee; 
this.resend = make(this, backup); 
r = foundMethod.apply(this, Array.prototype.slice.call(arguments, 1)); 
this.resend = old; 
return r 
} 
}; 
return function(name, args__) { 
var rv; 
var old = this.resend; 
this.resend = make(this, old); 
rv = this.resend.apply(this, arguments); 
this.resend = original; 
return rv; 
} 
}()
Javascript 相关文章推荐
JavaScript 调试器简介
Feb 21 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
js动态切换图片的方法
Jan 20 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
Dec 22 Javascript
详解创建自定义的Angular Schematics
Jun 06 Javascript
vue+element-ui实现表格编辑的三种实现方式
Oct 31 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 Javascript
原生JS封装拖动验证滑块的实现代码示例
Jun 01 Javascript
JavaScript编程开发中的五个实用小技巧
Jul 22 #Javascript
关于javascript DOM事件模型的两件事
Jul 22 #Javascript
JavaScript 事件系统
Jul 22 #Javascript
(function($){...})(jQuery)的意思
Jul 22 #Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 #Javascript
一个简单的js动画效果代码
Jul 20 #Javascript
dess中一个简单的多路委托的实现
Jul 20 #Javascript
You might like
PHP个人网站架设连环讲(一)
2006/10/09 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
php实现的顺序线性表示例
2019/05/04 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
使用Python脚本操作MongoDB的教程
2015/04/16 Python
python获取当前日期和时间的方法
2015/04/30 Python
Python迭代和迭代器详解
2016/11/10 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
Ajax和javascript的区别
2013/07/20 面试题
工作中的自我评价如何写好
2013/10/28 职场文书
创先争优标语
2014/06/27 职场文书
2014年应急工作总结
2014/12/11 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书