Как использовать «это» в строгом режиме - PullRequest
0 голосов
/ 01 июня 2018

У меня есть угловой сервис, назовем его ActionService, который использует 'use strict'.Поэтому, всякий раз, когда я использую this для вызова собственного метода, он не определен.Есть ли способ обойти строгое использование?

if (angular.isFunction(this[action.name])) {
   this[action.name](parameters);
} else {
   doSpecialAction(action, parameters);
}

1 Ответ

0 голосов
/ 01 июня 2018

Ваша проблема не имеет ничего общего с use strict;.

Javascript не обходит контекст this, IOW: this не связан с вызовом функции, если только вы не обращаетесь к функции с помощью точкипримечание: при вызове функции по умолчанию this будет неопределенным или окно, если не use strict, в обоих случаях не очень полезно.

Из-за этого в Javascript есть такие вещи, как bind / apply / call и т. д.

В вашем случае call, скорее всего, то, что вы после.

так.

this[action.name].call(this, parameters);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...