Могу ли я изменить контекст JavaScript «это»?

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

Это возможно? Спасибо, ~ ck в Сан-Диего

 VolkerK26 июн. 2009 г., 22:56
да, более или менее дубликатstackoverflow.com/questions/456967/… Принятым ответом было использование call () / apply (), см.developer.mozilla.org/en/Core_JavaScript_1.5_Reference/…
 DOK26 июн. 2009 г., 23:27
Это просто слишком запутанно. Все ответы говорят «нет», вы не можете этого сделать. Видимо, ответы на дубликаты вопроса да, вы можете это сделать. Пойди разберись.
 molf26 июн. 2009 г., 22:54
Смотрите ответ на этот вопрос:stackoverflow.com/questions/456967/…

Ответы на вопрос(3)

Решение Вопроса

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

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

 11 дек. 2013 г., 10:17
больше информации наjoshuakehn.com
 26 янв. 2018 г., 11:47
Вы также можете пройтиthis в качестве аргумента функции в вызовеUI$Contract$ddlForm_changeтогда вы можете использовать этот аргумент в качестве контекста / получить доступ к его свойствам

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 This

There is a this value associated with every active execution context. The this value depends on the caller and the type of code being executed and is determined when control enters the execution context. The this value associated with an execution context is immutable.

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

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

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

Ваш ответ на вопрос