Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的菊花链方法_Javascript_Arrays - Fatal编程技术网

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不进行任何此类优化。如果一个特定的运行时/编译器足够聪明的话,它可能会这样做