我正在查看以下代码,来自here
import {Http} from 'angular2/http'
import {Injectable} from 'angular2/core'
@Injectable()
export class AddressBookService {
http:Http;
constructor(http:Http){
console.log('Creating AddressBookService');
this.http = http;
}
getEntries(){
return this.http.get('./people.json').map(res => res.json());
}
}
我无法理解res => res.json()
的含义是什么。我认为它必须是一个lambda函数,但我不明白它的意义。它似乎没有返回并存储变量或执行任何有用的操作。
如果有人可以解释这一点,那将会很棒。
答案 0 :(得分:4)
$b
是ES6 syntax sugar,在这种情况下,它与此ES5兼容版本的功能相同:
return this.http.get('./people.json').map(res => res.json());
名称return this.http.get('./people.json').map(function(res) {return res.json();});
及其在代码中的使用表明map
将是某种集合,而this.http.get('./people.json')
会迭代每个元素,从而创建新的集合在每个元素上执行函数的结果。它应该与Array.map:
map
答案 1 :(得分:2)
想想这一行:
return this.http.get('./people.json').map(res => res.json());
作为此片段:
function myMap(res) {
return res.json();
}
var res = this.http.get('./people.json');
return myMap(res);
答案 2 :(得分:0)
https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions
this
绑定到定义函数的范围(当前AddressBookService
实例。因为该函数不使用this
,所以如果使用{=>
则无关紧要1}}或function () ...
但在任何地方使用=>
也没有什么坏处,因为如果您实际使用this
,它就不会出错。