Подтвердить что ты не робот

Могу ли я изменить контекст javascript "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);   
};

это возможно?

4b9b3361

Ответ 1

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

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

Ответ 2

Вы не можете изменить то, что this ссылается внутри функции.

Однако вы можете вызвать функцию в определенном контексте - так что this относится к определенному объекту - с помощью call или apply.

Ответ 3

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 Это

Существует такое значение, связанное с каждый активный контекст выполнения. это значение зависит от вызывающего и тип выполняемого кода и определяется, когда управление входит в контекст выполнения. Это значение связанный с контекстом выполнения является неизменным.

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