亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

既然 arr 是數組,為什么不直接如下這樣寫?

既然 arr 是數組,為什么不直接如下這樣寫?

夢里花落0921 2023-04-14 18:14:36
看了很多 JavaScript 的源代碼,發現很多類似這樣的寫法Array.prototype.slice.call(arr, 2)比較不解的是,既然 arr 是數組,為什么不直接這樣寫呢arr.slice(2)為什么實例對象本身已經有這個方法,為什么不直接調用,而采用這樣的寫法?有什么特殊用意嗎?
查看完整描述

1 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

在javascript里有一種array-like的對象,就是和Array很像,比如擁有push,slice等方法,擁有length屬性,而且你可以很容易的創建一個這樣的對象:

var foo = {0:'hello',1:'world',length:2,slice:Array.prototype.slice}

轉變成一個數組對象:

console.log(Array.prototype.slice.call(foo,0));
    //["hello", "world"]
    console.log(foo.slice())
    //["hello", "world"]

這里是因為這個像數組的對象擁有這個slice方法,如果沒有呢?就不能直接使用,要使用原型的方法調用了。如下:

console.log(Array.prototype.splice.call(foo,0));
    //["hello", "world"]
    console.log(foo.splice())
    //TypeError: Object #<Object> has no method 'splice'

常用的arguments對象, document.links, document.forms等都是非常像數組(Array)的,可以使用Array.prototype.slice.call將其轉換成數組操作。


查看完整回答
反對 回復 2023-04-17
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號