我可以更改javascript“this”的上下文吗?

时间:2009-06-26 20:51:17

标签: javascript javascript-events this

var UI$Contract$ddlForm_change = function() {

    //'this' is currently the drop down that fires the event
    // My question is can I change the context so "this" represents another object? 
    this = SomeObject;

    // then call methods on the new "this"
    this.someMethod(someParam);   
};

这可能吗?

3 个答案:

答案 0 :(得分:42)

不,这是不可能的。

您可以使用 this (使用 method.apply() / method.call() )调用具有指定值的方法,但您无法重新分配关键字 this

答案 1 :(得分:9)

你无法改变this里面函数引用的内容。

但是,您可以在特定上下文中调用函数 - 以便this引用特定对象 - 使用callapply。< / p>

答案 2 :(得分:7)

J-P是对的。这是不可能的。请参阅JavaScript语言规范文档ECMA-262。您可以从这里下载标准:

http://www.ecma-international.org/publications/standards/Ecma-262.htm

该文件为ECMA-262.pdf,第39页为10.1.7。

  

10.1.7这个

     

有一个与此相关的值   每个活动执行上下文。该   这个值取决于调用者和   正在执行的代码类型   当控制进入时确定   执行上下文。这个值   与执行上下文相关联   是不可改变的。

注意“是不可变的”。即无法改变。