經(jīng)常的,可以看到Array.prototype.slice(arguments, 0); 這個寫法可以用于function() {} 內(nèi),這樣可以將函數(shù)的參數(shù)列表轉(zhuǎn)換成一個真正的數(shù)組。請看一個例子:
復(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))
復(fù)制代碼 代碼如下:
slice.call(document.querySelectorAll("div"));
復(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"]
復(fù)制代碼 代碼如下:
console.log(slice.call(33));
console.log(slice.call(true));
復(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"]
復(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
新聞熱點
疑難解答
圖片精選