Угловой 2 КодНевозможно понять выражение lambdas в angular2?
heroes => this.heroes = heroes;
пожалуйста, скажите мне, что эта линия точно значит?
Угловой 2 КодНевозможно понять выражение lambdas в angular2?
heroes => this.heroes = heroes;
пожалуйста, скажите мне, что эта линия точно значит?
heroes => this.heroes = heroes;
Есть функция, которая принимает параметр heroes
и тело функции
this.heroes = heroes
, который присваивает параметр this.heroes
.
Функция стрелки имеет неявный возврат, что означает, что возвращаемое значение является результатом тела.
this.heroes = heroes
возвращает heroes
Основное отличие заключается в том, что =>
вместо
function(heroes) { this.heroes = heroes; }
гарантирует, что this.
продолжает указывать на текущий экземпляр класса аналогично
(function(heroes) { this.heroes = heroes; }).bind(this)
Ваш метод отправки данных "героев, то вы кладете то в вашу переменную this.heroes (две Differents вещи)
герои временно существуют, this.heroes является параметром вашего класса (Дженерали) –
, но когда я упоминаю то же самое, показанный ниже, это не работает \ п 'функции (Heros) { this.heroes = heroes; return this.heroes; } '' –
В ES6, мы называем это Функция стрелки, которая является сокращенной версией объявления функции и в то же время связывает this
внутри функции.
Его форма в синтаксисе ES5 будет:
...
var self = this;
function someFunction(heroes) {
self.heroes = heroes;
}
...
Я не остальная часть вашего кода, так что я только предположить некоторые части.
В основном, когда мы используем this
внутри функции, this
относится к только объем внутри функции. Он переопределяет внешний диапазон this
. Нам нужно будет создать ссылку на внешний this
(например, self
), чтобы функция имела доступ к ней.
Подробнее здесь: MDN: Arrow Functions
getHeroes(): пустота {. this.heroService.getHeroes() (подписывается (функция (герои) {this.heroes = герои; console.log (this.heroes); }), ошибка = > this.errorMessage = ошибка); console.log (this.heroes); } ' В этом коде первая консоль печатает объект героев, но вторая консоль не печатает. Зачем? @Gunter –
Как упоминалось 'this.'не сохраняется с' function (heroes) 'вместо' heroes => ... '. С 'function'' this.' указывает на прилагаемую функцию. –
Вы забыли упомянуть, что лямбда также возвращает значение. –