鍍金池/ 問(wèn)答/HTML/ js 中Array.prototype.slice.call(arrary,ar

js 中Array.prototype.slice.call(arrary,args)和數(shù)組直接調(diào)用slice方法有什么區(qū)別

javascript中操作數(shù)組比如Array.prototype.slice.call(arrary,args)和數(shù)組直接調(diào)用slice方法有什么區(qū)別

回答
編輯回答
奧特蛋

args屬于類數(shù)組對(duì)象啊,和document.getElementsByClassName獲取到的內(nèi)容類似,僅擁有數(shù)組結(jié)構(gòu)但是不具備數(shù)組的原型方法,所以會(huì)需要用Array.prototype.slice.call的形式去執(zhí)行綁定數(shù)據(jù)的slice方法。

2017年7月22日 16:44
編輯回答
安于心

數(shù)組直接調(diào)用slice方法是 返回一個(gè)從開始到結(jié)束(不包括結(jié)束)選擇的數(shù)組的一部分淺拷貝到一個(gè)新數(shù)組對(duì)象。
可以使用Array.prototype.slice.call(arguments)是將類數(shù)組(Array-like)對(duì)象/集合轉(zhuǎn)換成一個(gè)新數(shù)組。
或者簡(jiǎn)化寫法為[].slice.call(arguments)
另外,ES6 中新增的 API Array.from 同樣也可以將類數(shù)組對(duì)象轉(zhuǎn)為真正的數(shù)組
實(shí)際應(yīng)用中,類數(shù)組對(duì)象常常是 DOM 操作返回的 NodeList 集合以及函數(shù)的 arguments就是一個(gè)類數(shù)組對(duì)象
舉例:

let arrayLike = {
  '0': 'a',
  '1': 'b',
  '2': 'c',
  length: 3
}
// es5的寫法 
var arr =  Array.prototype.slice.call(arrayLike) // ["a", "b", "c"]
var arr = [].slice.call(arrayLike) // ["a", "b", "c"]
// es6的寫法
let arr2 = Array.from(arrayLike) // ["a", "b", "c"]

參考鏈接 slice

2017年2月18日 08:39