Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
Javascript Pocket Reference, p. 121: How is this "monkey-patching" method supposed to work?
作为apply()
概念的说明,《Javascript袖珍参考》一书,O’Reilly,2012年第3版提供了以下代码示例:
// Replace the method named m of the object o with a
// version that logs messages before and after invoking
// the original method.
function trace(o, m) {
var original = o[m]; // Remember original method.
o[m] = function() {
// Now define the new method.
console.log(new Date(), "Entering:", m); // Log
// Invoke the original method
var result = original.apply(this, arguments);
console.log(new Date(), "Exiting:", m); // Log
// Return the result of the original method
return result;
};
}
我理解这个trace
方法应该做什么(取一个对象并包装该方法来记录执行时间的开始和结束。)
我只是不明白这怎么能做到。它不返回新的o[m]
方法,也不调用它
如果我有
var obj = {
double: function(num) {
return 2 * num;
}
}
如何调用trace
查看日志?
它正在替换对象中名为m
的方法。m
实际上只是指向函数的对象哈希中的一个键,trace
用另一个封装原始函数的函数来替换它。
在您的情况下,您会这样调用它:
trace(obj, 'double');
你可以这样称呼它:
obj.double(2);
相关文章:
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 任何人都知道IE7设置或更新/补丁,它可以防止IE因为jquery错误而无法加载页面
- 了解Javascript中的猴子补丁
- tastypie和x-editable使用补丁
- 补丁'这'带有jQuery的变量
- 使用油脂猴子自动点击延迟
- 猴子补丁导出功能
- 如何在没有临时变量的情况下扩展方法(猴子补丁)
- 在篡改猴子中,变量urlm的行为不同
- 带有篡改猴子错误的 MomentJS
- 你能对YUI模块的猴子补丁方法吗?
- 猴子补丁 jquery 函数内容
- 什么是关于打字稿的猴子补丁
- 如何猴子补丁快速视图查找
- 在GNOME Shell扩展'这是猴子的补丁,这是出乎意料的
- 猴子补丁没有开火.(我猜这只猴子不会打鸭子.)
- 我该如何申报'猴子补丁'打字稿中的原型
- JavaScript猴子补丁
- 是“;猴子补丁”;真的那么糟糕
- 在编写TypeScript单元测试时,我可以对依赖进行猴子补丁吗?