31
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);   
};

这可能吗?

4

3 回答 3

50

不,这是不可能的。

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

于 2009-06-26T21:14:57.490 回答
10

您无法更改函数内部this所指的内容。

但是,您可以使用or来调用特定上下文中的函数 - 以便this引用特定对象。callapply

于 2009-06-26T21:38:57.240 回答
7

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

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

该文件是 ECMA-262.pdf 和第 39 页,第 10.1.7 节。

10.1.7 这个

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

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

于 2009-06-26T21:22:20.860 回答