2016-05-16 63 views
0

我试图链接一个Array对象的方法,但它不会让我。简单的JavaScript方法链接

var arr = [1,2,3]; 
arr.splice(-3, 1, 'foot').splice(arr.length,0, 'hand'); 
console.log(arr) // ['foot', 2, 3] 

//trying to get ['foot', 2, 3, 'hand'] 

这是行不通的。我必须把第二个splice分成一个新的陈述。为什么这不起作用?我已经在JavaScript代码中看到了多次链接。

+0

给单手'手' –

回答

2

只是因为Array.prototype.splice返回一个包含已删除元素的数组,您可以在其documentation page上找到它。

所以基本上有些方法允许链接和一些不要。如果这是您第一次使用它们,您可以参考文档。

更确切地说,一个数组的大多数方法创建一个新的数组(除了拼接),所以它在技术上并不是链接,因为您不在同一个数组的同一个实例上应用不同的方法。典型的克隆链方法是filter,map,find

+0

是否有一个属性,我可以找到告诉是否数组方法是可链接的?或者我应该假设任何返回一个新数组的方法是可链接的? – inthenameofmusik

+0

同样,你可以在任何数组上使用数组方法,所以如果一个方法返回一个数组,那么你可以“链”它。然而,由于它是一个新的数组,它不会总是按照您的期望来做,所以之前阅读文档(或者做一些测试)很重要。例如,你链接了两个'splice'调用,但不是你期望的结果。 – floribon