JS实现self的resend

 更新时间:2010年07月22日 01:00:42   作者:  
self中resend是调用“基类方法”的原语,它会把当前接收到的消息原样发送给其原型(parent*)。在ECMA-v5时代,我们终于可以做出这个伟大的东西了。
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中HTMLDOM操作详解

    javascript中HTMLDOM操作详解

    这篇文章主要介绍了javascript中HTMLDOM操作详解,需要的朋友可以参考下
    2014-12-12
  • 如何使用electron-builder及electron-updater给项目配置自动更新

    如何使用electron-builder及electron-updater给项目配置自动更新

    这篇文章主要介绍了如何使用electron-builder及electron-updater给项目配置自动更新,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • layui table单元格事件修改值的方法

    layui table单元格事件修改值的方法

    今天小编就为大家分享一篇layui table单元格事件修改值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 浅谈js中几种实用的跨域方法原理详解

    浅谈js中几种实用的跨域方法原理详解

    本篇文章主要介绍了js中几种实用的跨域方法原理详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • JS获取地址栏参数的两种方法(简单实用)

    JS获取地址栏参数的两种方法(简单实用)

    这篇文章主要介绍了JS获取地址栏参数的两种方法(简单实用),小编给大家推荐使用第一种采用正则表达式获取地址栏参数的方法,此方法简单实用,对js获取地址栏参数相关知识感兴趣的朋友,一起学习吧
    2016-06-06
  • 深入分析Javascript跨域问题

    深入分析Javascript跨域问题

    JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下
    2015-04-04
  • js弹出模式对话框,并接收回传值的方法

    js弹出模式对话框,并接收回传值的方法

    js弹出模式对话框,并接收回传值的方法,需要的朋友可以参考一下
    2013-03-03
  • 你有必要知道的25个JavaScript面试题

    你有必要知道的25个JavaScript面试题

    这篇文章主要为大家分享了我们有必要知道的25个JavaScript面试题。想要顺利通过面试的朋友可以参考一下
    2015-12-12
  • 如何写好你的JavaScript【推荐】

    如何写好你的JavaScript【推荐】

    在实际工作中,我们应该经常会看到一些功能上没有问题,但编码风格和规范却十分糟糕的代码,这往往会让人不敢再往下阅读,甚至会影响阅读者一天的心情。本文的目的在于帮助那些没有养成良好的编码风格,缺乏相应编码规范意识的JavaScript学习者们改善他们的编码形象。
    2017-03-03
  • JavaScript获取URL参数的四种方法总结

    JavaScript获取URL参数的四种方法总结

    在前端开发过程中难免会遇到处理url参数的问题,这篇文章主要给大家总结介绍了关于JavaScript获取URL参数的四种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01

最新评论