JavaScript中的菊花链方法
梅在周末想到了这一点,我很想知道当一个人将方法链接在一起时到底发生了什么,如下面的代码:JavaScript中的菊花链方法,javascript,arrays,Javascript,Arrays,梅在周末想到了这一点,我很想知道当一个人将方法链接在一起时到底发生了什么,如下面的代码: const posts = [{}, {}, {}, ...] posts .filter(({ node }) => node.fields.slug !== '/about/') .reverse() .slice(0, 5) 每个Array.prototype方法在以某种方式转换数据后返回一个数组filter和slice都返回了存在指定转换的原始数组的副本。我想知道的是,Java
const posts = [{}, {}, {}, ...]
posts
.filter(({ node }) => node.fields.slug !== '/about/')
.reverse()
.slice(0, 5)
每个Array.prototype
方法在以某种方式转换数据后返回一个数组filter
和slice
都返回了存在指定转换的原始数组的副本。我想知道的是,JavaScript是否正在执行一些内部管道,就像我在elixir
中看到的那样。每个方法都需要一个数组才能工作,但我认为不一定要作为参数
我不相信上述情况与此类似。我知道第一个参数必须是管道操作员在elixir
中工作之前操作返回的任何参数:
posts
|> filter(({ node }) => node.fields.slug !== '/about/')
|> reverse()
|> slice(0,5)
我不知道该去哪里看才能更好地理解这一点,所以如果你能给我指出正确的方向,我会去阅读。我只是好奇想知道,非常感谢您提供的信息。没有什么比返回
这个
或其他新对象更复杂的了。一个简单的例子是:
函数Num(val){//Num构造函数
this.val=val;
};
Num.prototype.increment=函数(){
这个.val++;
归还这个;
}
Num.prototype.decrement=函数(){
这是瓦尔;
归还这个;
}
Num.prototype.getVal=函数(){
返回此.val;
}
var num=新的num(0);
num.increment().increment().decrement().increment();
console.log(num.getVal());//2
它们只是返回对象的方法。可能这个可能是新的东西。就像链接字符串一样。替换(这个,那个)。替换(那个,那个)
。另请参见指定的Javascript不进行任何此类优化。如果一个特定的运行时/编译器足够聪明的话,它可能会这样做