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;}
}()

转载于:https://www.cnblogs.com/infinte/archive/2010/07/21/resend-in-js-v5.html

[V5] self的resend,JS实现相关推荐

  1. 表单验证之validform.js使用方法

    Validform使用入门 1.引入css 请查看下载文件中的style.css,把里面Validform必须部分复制到你的css中(文件里这个注释 "/*==========以下部分是Va ...

  2. Node Inspector 调试 Node.js 程序

    Node Inspector 是一款提供界面化调试 nodejs 程序的调试器,使用它可以在浏览器中像调试前端页面一样调试 nodejs 程序. 环境 [dongshaoshuai~/js] ]$no ...

  3. 【JS】930- 更快的 async 函数和 promises

    作者:语雀 链接:https://www.yuque.com/es2049/blog/yfqmu1 原文链接:https://v8.dev/blog/fast-async JavaScript 的异步 ...

  4. sojson.v5 | jsjiami.com.v5 最新解密方法

    话不多说,先上源代码和加密代码. var a={},b={}; (function(w, d) { w.info = "这是一个一系列js操作."; d.warning = &qu ...

  5. Validform 学习笔记---基础知识整理

    面对表单的验证,自己写大量的js毕竟不是一个明智的做法.不仅仅是代码很长而且不便于梳理.Validform就是一款开源的第三方验证js的控件,通过添加相应的js以及css能够有效的验证表单,维护起来也 ...

  6. 基于源码剖析nodejs模块系统

    nodejs模块系统 简介 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之, 一个 No ...

  7. nodejs中的模块的理解

    nodejs所谓的模块就是一个文件,或者是匿名函数.(CommonJs) require exports module.exports. 为什么直接console.log(typeof require ...

  8. openlayer 动态切换瓦片url

    <!DOCTYPE html> <html><head><title>栅格瓦片切换</title><meta charset=&quo ...

  9. Q新闻丨Java 9正式版恐再延期;顺丰菜鸟口水战涉及阿里云;编程语言排行榜Python第四;盲人程序员背百万字符,用耳朵编程...

    编辑|小智 本周要闻:Java 9 正式版有可能被推迟到 9 月 21 号发布:顺丰.菜鸟口水战始末,或涉及阿里云:Node.js 发布 v8.0.0:Visual Studio for Mac 版本 ...

  10. 小试牛刀-利用AST平坦化一段瑞数代码

    文章目录 前言 第一式:鬼影迷踪 第二式:森罗万象 处理逻辑 Step1-处理if...else if... Step2-补全if...else... Step3-平坦化 小结 参考文章 前言 最近一 ...

最新文章

  1. ubuntu libapache2-mod-php5,ubuntu安装apache2 mysql5 php5
  2. python处理文本文件 提取英文单词看成一个整体_任意一个英文的纯文本文件,统计其中的单词出现的个数(shell python 两种语言实现)...
  3. JVM - Class常量池 || 运行时常量池
  4. C++ string线程不安全
  5. Exercise 12: Prompting People
  6. 前端学习(1126):递归求数学题
  7. 四步获取微信登录所需的openid和session_key
  8. FreeSWITCH第三方库(视频)的简单介绍(二)
  9. 618期间, “直播带货”翻车负面信息暴增
  10. 复制数据库(本地到阿里云)
  11. xmake vs cmake对比分析
  12. java 把数据写入xml_java中用jdom 如何创建xml文档/将数据写入XML中
  13. 微软补丁日安全公告|11月份
  14. matlab获取图片上的字,Matlab读取图片代码
  15. BWA处理WES文件
  16. GEF原理及实现系列(四、控制器)
  17. FDMS86252 实现低导通电阻 高效率的N沟道屏蔽栅极MOSFET管 150V 16A 51mΩ
  18. 计算机设备更新理由,电脑硬件明明升级了,为什么速度还这么慢?四种原因在背后作怪!...
  19. HAL库学习之串口通信
  20. gm 1 n 模型matlab,灰色预测模型GM1,n模型的matlab源...

热门文章

  1. 用计算机采集光栅尺的数据,基于PLC的光栅尺数据采集系统及方法与流程
  2. 云呐AIOps|智能运维管理平台解决服务器运维安全问题
  3. 表格中的斜线怎么弄?WPS最全技巧分享
  4. feil在java里什么意思_JAVA 中的 - 是什么意思?
  5. 联发科正式发布Helio P23/P30 SoC:GPU、基带大升级
  6. uabntu镜像文件的后缀
  7. 香橙派装ubuntu系统
  8. php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
  9. Java获取当前电脑的ip地址
  10. 安卓的数据共享——从一个APP中调用另一个APP数据的方法