久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

JavaScript中Array.apply解析

放大字體  縮小字體 發布日期:2018-02-28  來源:企業800網  作者:新格網  瀏覽次數:635  【去百度看看】
核心提示:如何理解Array.apply(null, {length:5})的{length:5}?本文主要和大家分享JavaScript中Array.apply解析,希望能幫助到大家。
先來看一個問題:

如何理解Array.apply(null, {length:5})的{length:5}?本文主要和大家分享Javascript中Array.apply解析,希望能幫助到大家。

我測試過

Array.apply(null, {length:5}) //返回[undefined, undefined, undefined, undefined, undefined]
Array.apply(null, [{length:5}])和Array({length:5})返回的結果是一樣的,為[[object Object] { length: 5 }]

第二、三還能理解!第一種怎么理解?

實際 這個 和 Array 沒有任何關系,只是碰巧 使用 Array 時遇到了。

我覺得這個問題應該從 Function.call和 Function.apply 來入手。
這兩個 函數的方法 功能都是一樣的,都是為了改變 this 的指向。
唯一的區別就是參數不一樣,apply的第二個參數必須傳入數組。

首先需要有個 函數,定義個 iAmArray;

var iAmArray = function(){
    return arguments;
};

這里不用管this,下面是正常調用它的三種方式:

//方便你復制到 Console 中測試,在此再寫一遍
var iAmArray = function(){
    return arguments;
};

//普通寫法
iAmArray(1,2,3);


//call寫法
iAmArray.call(null,1,2,3);


//apply寫法
iAmArray.apply(null,[1,2,3]);

apply方式調用時,估計是一個小bug,只要是 Object,還有length,它就當作數組處理了,實際和 Array 沒有任何關系,任何函數都會這樣。

//方便你復制到 Console 中測試,在此再寫一遍
var iAmArray = function(){
    return arguments;
};

var iHaveLength = function(length){
    this.length = length || 5;
    this[2] = "第三個元素";
};


iAmArray.apply(null, new iHaveLength());

iAmArray.apply(null, new iHaveLength(3));

最后總結

然后其實第二個參數只要是個類數組對象就可以了,比如 {length: 5} 就可以看作一個類數組對象,長度是 5,每個元素,比如 v[0] 是 undefined。

所以,Array.apply(null, { length: 5}) 相當于
Array(undefined, undefined, undefined, undefined, undefined)

以上就是Javascript中Array.apply解析的詳細內容,更多請關注php中文網其它相關文章!

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業800網 · 提供技術支持