容易设置“这个”变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我对Javascript有很好的理解,只是我找不到一个很好的方法来设置“this”变量。考虑:

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是一种选择,但这不是问题的重点。

提问于
用户回答回答于

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

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

这些函数所做的是调用它们被调用的函数,分配对象参数

var myFunction = function(){
    alert(this.foo_variable);
}
myFunction.call( document.body );
用户回答回答于

myFunction.call(obj, arg1, arg2, ...);

这叫myFunction带着this设为obj.

也有稍微不同的方法。apply,它将函数参数作为数组:

myFunction.apply(obj, [arg1, arg2, ...]);

扫码关注云+社区