javascript Array.prototype.slice的使用示例
更新時(shí)間:2013年11月14日 15:46:53 作者:
javascript Array.prototype.slice除了常見的從某個(gè)數(shù)組中抽取出新的數(shù)組外,它還有一些其他的用法,下面就為大家講這些妙用
經(jīng)常的,可以看到Array.prototype.slice(arguments, 0); 這個(gè)寫法可以用于function() {} 內(nèi),這樣可以將函數(shù)的參數(shù)列表轉(zhuǎn)換成一個(gè)真正的數(shù)組。請(qǐng)看一個(gè)例子:
var slice = Array.prototype.slice;
var toString = Object.prototype.toString;
(function() {
var args = arguments;
console.log(args, toString.call(args)); // [1, 2, 3] "[object Arguments]"
var argsArr = slice(args, 0);
console.log(argsArr, toString.call(argsArr)); // [1, 2, 3] "[object Array]"
}(1,2,3))
我們可以看到函數(shù)的參數(shù)列表arguments通過slice調(diào)用以后,一秒鐘變Array了。
同樣的,也可以將選中的DOM元素轉(zhuǎn)換成數(shù)組:
slice.call(document.querySelectorAll("div"));
順藤摸瓜,我們想想,slide方法是否可以將對(duì)象轉(zhuǎn)換成數(shù)組呢?請(qǐng)看例子:
console.log(slice.call('string')); // ["s", "t", "r", "i", "n", "g"]
console.log(slice.call(new String('string'))); // ["s", "t", "r", "i", "n", "g"]
每次,字符串會(huì)直接被轉(zhuǎn)換成了一個(gè)數(shù)組。
但是,數(shù)字,布爾值的會(huì)轉(zhuǎn)換成一個(gè)空的數(shù)組:
console.log(slice.call(33));
console.log(slice.call(true));
普通的對(duì)象也會(huì)被轉(zhuǎn)換成空數(shù)組,除非你給它加上一個(gè)length屬性:
console.log(slice.call({name: 'obj'})); // []
console.log(slice.call({0: 'zero', 1: 'one'})); // []
console.log(slice.call({0: 'zero', 1: 'one', name: 'obj', length: 2})); // ["zero", "one"]
還有,它還可以用來clone數(shù)組:
var srcArr = [1,2,3];
var newArr = srcArr.slice(0);
console.log(srcArr, newArr); // [1,2,3] [1,2,3]
console.log(srcArr == newArr); // false
復(fù)制代碼 代碼如下:
var slice = Array.prototype.slice;
var toString = Object.prototype.toString;
(function() {
var args = arguments;
console.log(args, toString.call(args)); // [1, 2, 3] "[object Arguments]"
var argsArr = slice(args, 0);
console.log(argsArr, toString.call(argsArr)); // [1, 2, 3] "[object Array]"
}(1,2,3))
我們可以看到函數(shù)的參數(shù)列表arguments通過slice調(diào)用以后,一秒鐘變Array了。
同樣的,也可以將選中的DOM元素轉(zhuǎn)換成數(shù)組:
復(fù)制代碼 代碼如下:
slice.call(document.querySelectorAll("div"));
順藤摸瓜,我們想想,slide方法是否可以將對(duì)象轉(zhuǎn)換成數(shù)組呢?請(qǐng)看例子:
復(fù)制代碼 代碼如下:
console.log(slice.call('string')); // ["s", "t", "r", "i", "n", "g"]
console.log(slice.call(new String('string'))); // ["s", "t", "r", "i", "n", "g"]
每次,字符串會(huì)直接被轉(zhuǎn)換成了一個(gè)數(shù)組。
但是,數(shù)字,布爾值的會(huì)轉(zhuǎn)換成一個(gè)空的數(shù)組:
復(fù)制代碼 代碼如下:
console.log(slice.call(33));
console.log(slice.call(true));
普通的對(duì)象也會(huì)被轉(zhuǎn)換成空數(shù)組,除非你給它加上一個(gè)length屬性:
復(fù)制代碼 代碼如下:
console.log(slice.call({name: 'obj'})); // []
console.log(slice.call({0: 'zero', 1: 'one'})); // []
console.log(slice.call({0: 'zero', 1: 'one', name: 'obj', length: 2})); // ["zero", "one"]
還有,它還可以用來clone數(shù)組:
復(fù)制代碼 代碼如下:
var srcArr = [1,2,3];
var newArr = srcArr.slice(0);
console.log(srcArr, newArr); // [1,2,3] [1,2,3]
console.log(srcArr == newArr); // false
相關(guān)文章
如何在JavaScript中創(chuàng)建具有多個(gè)空格的字符串?
這篇文章主要介紹了如何在JavaScript中創(chuàng)建具有多個(gè)空格的字符串?,需要的朋友可以參考下2020-02-02微信小程序中選中手機(jī)相冊(cè)圖片上傳到服務(wù)器的步驟
這篇文章主要介紹了微信小程序中選中手機(jī)相冊(cè)圖片上傳到服務(wù)器的步驟,現(xiàn)圖片上傳我們需要使用chooseImg和uploadFile這兩個(gè)api,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-04-04js實(shí)現(xiàn)特別簡(jiǎn)單的鐘表效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)特別簡(jiǎn)單的鐘表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09js實(shí)現(xiàn)提交前對(duì)列表數(shù)據(jù)的增刪改查
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)提交前對(duì)列表數(shù)據(jù)的增刪改查,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01JS實(shí)現(xiàn)點(diǎn)擊按鈕后框架內(nèi)載入不同網(wǎng)頁的方法
這篇文章主要介紹了JS實(shí)現(xiàn)點(diǎn)擊按鈕后框架內(nèi)載入不同網(wǎng)頁的方法,涉及javascript點(diǎn)擊按鈕載入頁面的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05轉(zhuǎn)換json格式的日期為Javascript對(duì)象的函數(shù)
項(xiàng)目中碰到了用jQuery從后臺(tái)獲取的json格式的日期的字符串,需要將此字符串轉(zhuǎn)換成JavaScript的日期對(duì)象,記在此處,以備后用。2010-07-07JS實(shí)現(xiàn)不用中間變量temp 實(shí)現(xiàn)兩個(gè)變量值得交換方法
這篇文章主要介紹了在JS中 實(shí)現(xiàn)不用中間變量temp 實(shí)現(xiàn)兩個(gè)變量值得交換 ,需要的朋友可以參考下2018-02-02