[V5] self的resend,JS实现
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实现相关推荐
- 表单验证之validform.js使用方法
Validform使用入门 1.引入css 请查看下载文件中的style.css,把里面Validform必须部分复制到你的css中(文件里这个注释 "/*==========以下部分是Va ...
- Node Inspector 调试 Node.js 程序
Node Inspector 是一款提供界面化调试 nodejs 程序的调试器,使用它可以在浏览器中像调试前端页面一样调试 nodejs 程序. 环境 [dongshaoshuai~/js] ]$no ...
- 【JS】930- 更快的 async 函数和 promises
作者:语雀 链接:https://www.yuque.com/es2049/blog/yfqmu1 原文链接:https://v8.dev/blog/fast-async JavaScript 的异步 ...
- sojson.v5 | jsjiami.com.v5 最新解密方法
话不多说,先上源代码和加密代码. var a={},b={}; (function(w, d) { w.info = "这是一个一系列js操作."; d.warning = &qu ...
- Validform 学习笔记---基础知识整理
面对表单的验证,自己写大量的js毕竟不是一个明智的做法.不仅仅是代码很长而且不便于梳理.Validform就是一款开源的第三方验证js的控件,通过添加相应的js以及css能够有效的验证表单,维护起来也 ...
- 基于源码剖析nodejs模块系统
nodejs模块系统 简介 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之, 一个 No ...
- nodejs中的模块的理解
nodejs所谓的模块就是一个文件,或者是匿名函数.(CommonJs) require exports module.exports. 为什么直接console.log(typeof require ...
- openlayer 动态切换瓦片url
<!DOCTYPE html> <html><head><title>栅格瓦片切换</title><meta charset=&quo ...
- Q新闻丨Java 9正式版恐再延期;顺丰菜鸟口水战涉及阿里云;编程语言排行榜Python第四;盲人程序员背百万字符,用耳朵编程...
编辑|小智 本周要闻:Java 9 正式版有可能被推迟到 9 月 21 号发布:顺丰.菜鸟口水战始末,或涉及阿里云:Node.js 发布 v8.0.0:Visual Studio for Mac 版本 ...
- 小试牛刀-利用AST平坦化一段瑞数代码
文章目录 前言 第一式:鬼影迷踪 第二式:森罗万象 处理逻辑 Step1-处理if...else if... Step2-补全if...else... Step3-平坦化 小结 参考文章 前言 最近一 ...
最新文章
- ubuntu libapache2-mod-php5,ubuntu安装apache2 mysql5 php5
- python处理文本文件 提取英文单词看成一个整体_任意一个英文的纯文本文件,统计其中的单词出现的个数(shell python 两种语言实现)...
- JVM - Class常量池 || 运行时常量池
- C++ string线程不安全
- Exercise 12: Prompting People
- 前端学习(1126):递归求数学题
- 四步获取微信登录所需的openid和session_key
- FreeSWITCH第三方库(视频)的简单介绍(二)
- 618期间, “直播带货”翻车负面信息暴增
- 复制数据库(本地到阿里云)
- xmake vs cmake对比分析
- java 把数据写入xml_java中用jdom 如何创建xml文档/将数据写入XML中
- 微软补丁日安全公告|11月份
- matlab获取图片上的字,Matlab读取图片代码
- BWA处理WES文件
- GEF原理及实现系列(四、控制器)
- FDMS86252 实现低导通电阻 高效率的N沟道屏蔽栅极MOSFET管 150V 16A 51mΩ
- 计算机设备更新理由,电脑硬件明明升级了,为什么速度还这么慢?四种原因在背后作怪!...
- HAL库学习之串口通信
- gm 1 n 模型matlab,灰色预测模型GM1,n模型的matlab源...
热门文章
- 用计算机采集光栅尺的数据,基于PLC的光栅尺数据采集系统及方法与流程
- 云呐AIOps|智能运维管理平台解决服务器运维安全问题
- 表格中的斜线怎么弄?WPS最全技巧分享
- feil在java里什么意思_JAVA 中的 - 是什么意思?
- 联发科正式发布Helio P23/P30 SoC:GPU、基带大升级
- uabntu镜像文件的后缀
- 香橙派装ubuntu系统
- php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
- Java获取当前电脑的ip地址
- 安卓的数据共享——从一个APP中调用另一个APP数据的方法