这里的 beforefn.apply(this,arguments); this 改为 window或null可以吗?
function a() {
console.log('self');
}
var obj = {
name:'li',
getName: function() {
console.log(this.name);
}
}
Function.prototype.before = function(beforeFn) {
var __self = this;
return function() {
beforeFn.apply(this,arguments);
__self.apply(this,arguments)
}
}
var b = a.before(obj.getName);
b();
如果我想 通过a.before执行obj.getName 得到 'li' 这个值,如何处理这套程序?现在这套before程序执行结果,无法获得obj.name的值
不行,
this
需要根据执行的宿主确定,有可能是windows
,也有可能是某个对象。如果按照你说的将
this
改为window
,那么this
将永远指向window
,objB.test1()
得到的结果将是我是window中的b
,this
就被劫持了。后面的需求,动态设置
this
指向