Typescript / Angular2 делегат без функции стрелки - PullRequest
0 голосов
/ 28 февраля 2019

Почему результат работы машинописных делегатов не равен:

someProperty: any;

someActionsWithItems(item: any) {
   this.someProperty = "test";
}

//if I use this. Its OK.:
this.array.forEach(item => this.someActionsWithItems(item));

// But another. It will be error because context 'this' isn't initialize (Cannot set property 'someProperty' of undefined):
this.array.forEach(this.someActionsWithItems);

Почему ???

1 Ответ

0 голосов
/ 28 февраля 2019

Разница заключается в функции стрелки.Если вы используете функцию стрелки =>, она связывает this с функцией.

В вашем случае

this.array.forEach(item => this.someActionsWithItems(item));

равно

this.array.forEach(this.someActionsWithItems.bind(this));

Вы можетесм. https://www.w3schools.com/js/js_function_closures.asp

и https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...