一尘不染

轻松设置“此”变量?

javascript

除了无法找到设置“ this”变量的好方法之外,我对Javascript有很好的理解。考虑:

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body; //using body as example object
someObj.foo_variable = "hi"; //set foo_variable so it alerts

var old_fn = someObj.fn;   //store old value
someObj.fn = myFunction;   //bind to someObj so "this" keyword works
someObj.fn();              
someObj.fn = old_fn;       //restore old value

没有最后四行,有没有办法做到这一点?这很烦人……我试图绑定一个匿名函数,我认为它是美丽而聪明的,但无济于事:

var myFunction = function(){
    alert(this.foo_variable);
}

var someObj = document.body;        //using body as example object
someObj.foo_variable = "hi";        //set foo_variable so it alerts
someObj.(function(){ fn(); })();    //fail.

显然,将变量传递到myFunction是一个选项……但这不是这个问题的重点。

谢谢。


阅读 348

收藏
2020-05-01

共1个答案

一尘不染

为JavaScript中的所有函数定义了两种方法call(),和apply()。函数语法如下:

call( /* object */, /* arguments... */ );
apply(/* object */, /* arguments[] */);

这些函数的作用是调用它们所调用的函数,并将 object 参数的值分配给 this

var myFunction = function(){
    alert(this.foo_variable);
}
myFunction.call( document.body );
2020-05-01