触发即将被替换的对象的方法
Triggering a method of an object that will soon be replaced
给定这个变量:
somevar = {dothis: function(){console('yay')}};
如果我想劫持它,我想我会这样做:
tempvar = somevar;
somevar = function(){ console.log('yoink'); tempvar();};
但是如果我知道var将在60秒内被重新定义,而我想在65秒内劫持它,我该怎么做呢?setTimeout不会立即解析函数,然后引用旧的被劫持函数吗?
试试这样:
// initial data
var somevar = {
dothis: function(){
console.log('yay');
}
};
somevar.dothis(); // output: yay
// hijacking in 1 second
setTimeout(function () {
console.log('hijacking');
somevar.dothis = (function (orig) {
return function () {
console.log('yoink');
orig.apply(this, arguments);
};
}(somevar.dothis));
}, 1000);
// saved reference running 1.5 seconds later (0.5 seconds after hijacking)
setTimeout(somevar.dothis, 1500); // output (still): yay
// live reference running 2 seconds later (1 second after hijacking)
setTimeout(function () {
somevar.dothis(); // output: yoink / yay
}, 2000);
演示:http://jsfiddle.net/MDLZt/
相关文章:
- 从 javascript 中的对象方法返回一个对象
- 在Javascript中调用对象方法时不是函数类型错误
- Java Script将对象方法映射到数组中的对象
- 将数据从promise then方法传递到对象方法
- 设置显示后Flash对象方法不可用:无
- 通过引用Javascript中的另一个函数来传递对象方法
- Javascript库对象方法声明
- JavaScript对象范围-在对象方法中使用对象变量
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- Javascript 对象方法不更新变量
- setInterval 只在对象方法上运行一次
- 对象方法中函数中的上下文
- 用JavaScript编写对象方法的最佳方式是什么
- 使用回调处理程序调用函数内部的父对象方法
- 从Javascript中的对象方法中访问全局变量
- 将此(对象)传递到一个对象方法嵌套方法中
- 为什么我得到“;不是函数错误”;对于我的对象方法
- 带有回调的Javascript对象方法中的递归
- 更正Node.js异步管道中的对象方法调用
- 如何在对象方法上调用requestAnimFrame