Я могу изменить контекст JavaScript “это”?

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

действительно ли это возможно?

26
задан Brian Tompsett - 汤莱恩 27 August 2019 в 21:16
поделиться

3 ответа

Нет, это невозможно.

Вы можете вызвать метод с указанным значением для this (используя method.apply () / method.call () ), но вы не можете повторно назначить ключевое слово this .

44
ответ дан 28 November 2019 в 06:42
поделиться

You can't change what this refers to from inside the function.

However, you can call a function in a specific context - so that this refers to a specific object - by using call or apply.

9
ответ дан 28 November 2019 в 06:42
поделиться

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, связанное с каждый активный контекст выполнения. В это значение зависит от вызывающего абонента и тип выполняемого кода и определяется, когда контроль переходит в контекст исполнения. Это значение связанный с контекстом выполнения неизменяем.

Примечание "неизменяемо". т.е. не может быть изменено.

7
ответ дан 28 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: