我正在为我的同事们制作一个关于JS函数式编程的PPT(因为Java的Streams有太多的样板文件用于介绍(,我想知道:在没有库的情况下获取对象的属性有语法糖吗?
在Java中,您可以执行以下操作:(例如,基于具有name属性的Person及其getter方法(
public List<String> names(List<Person> people){
return people.stream().map(Person::getName).collect(Collectors.toList())
}
我正在寻找Person::getName的等效项。
编辑:我希望为lambda表达式找到一个变通方法,在该表达式中,函数直接作为参数传递。
因此,人们会放一些类似people.map(getName)
或类似的东西来代替people.map(person => person.name)
。
不,JavaScript没有1,习惯上只使用箭头函数(Java俚语中的"lambda"(:
names(people){
return people.map(p => p.name); // or p => p.getName();
// or people[Symbol.iterator]().map(…).toArray();
}
1:如果你真的有一个带有getName
原型方法的class Person
,你可以简单地编写一个帮助函数const accessor = method => instance => method.call(instance);
用作.map(accessor(Person.prototype.getName))
,但这不是很习惯。最多用于按属性名称访问事物:const get = propName => object => object[propName];
和.map(get("name"))