У меня есть это странное поведение и надеюсь, что вы можете мне помочь. =)Узел против Chrome, реализация instanceof, несколько файлов
У меня есть настройка, где мне нужно запустить JavaScript
с использованием Mocha
. Код генерируется от TypeScript
, а тесты выполняются как в браузере, так и в nodejs
через модули и commonjs
. Проблема в том, что я хочу использовать instanceof
, но, по-видимому, поведение отличается в зависимости от того, выполняется ли код в Node
или в Chrome
. Пример следующий.
// file Actions.ts
Class Action {..}
Class ViewAction extends Action {..}
Class MyViewAction extends ViewAction {..}
// file App.ts
var action = new MyViewAction();
// file App.ts or Elsewhere.ts
foo(action) {
var testA = action instanceof MyViewAction;
var testB = (<any>action.constructor).name === "MyViewAction";
}
Дело в том, если Foo вызывается в другом commonjs
модуле, testA
становится false
, если запустить в Node
но true
, если запустить в Chrome
, в то время как testB
в обоих случаях true
.
Если foo запущен в том же файле, что и действие назначено, код будет работать последовательно.
Может ли кто-нибудь воспроизвести эту ошибку или объяснить, что я делаю неправильно?
Приветствия
Ссылка на 'MyViewAction' присутствует в обоих случаях? – Sirko