javascript Array.prototype.slice的使用樣本

來源:互聯網
上載者:User

經常的,可以看到Array.prototype.slice(arguments, 0); 這個寫法可以用於function() {} 內,這樣可以將函數的參數列錶轉換成一個真正的數組。請看一個例子:
複製代碼 代碼如下:
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))

我們可以看到函數的參數列表arguments通過slice調用以後,一秒鐘變Array了。
同樣的,也可以將選中的DOM元素轉換成數組:
複製代碼 代碼如下:
slice.call(document.querySelectorAll("div"));

順藤摸瓜,我們想想,slide方法是否可以將對象轉換成數組呢?請看例子:
複製代碼 代碼如下:
console.log(slice.call('string')); // ["s", "t", "r", "i", "n", "g"]
console.log(slice.call(new String('string'))); // ["s", "t", "r", "i", "n", "g"]

每次,字串會直接被轉換成了一個數組。
但是,數字,布爾值的會轉換成一個空的數組:
複製代碼 代碼如下:
console.log(slice.call(33));
console.log(slice.call(true));

普通的對象也會被轉換成空數組,除非你給它加上一個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數組:
複製代碼 代碼如下:
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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.