2016-09-20 83 views
3

我知道通話和應用是用於在JavaScript中明確地設置這個。 使用以下代碼是檢查它是否爲數組對象。它將控制檯[object Array]什麼toString.call(數組)實際上做?

var arr = []; 
console.log(toString.call(arr)); 

誰能讓我明白toString.call(arr)是做什麼的代碼?

回答

4

toString.call(arr)調用toString(無論如何)與this設置爲數組。它的作用完全取決於toString是什麼。

例如,如果它是Object.prototype.toString,它可靠地生成此字符串:[object Array]。這是非常方便的ES2015前環境來確定陣列是一個數組或別的東西:

if (Object.prototype.toString.call(arr) === "[object Array]") { 
    // Yes, it's a true array 
} else { 
    // No, it isn't 
} 

(在ES2015,Array.isArray加入:if (Array.isArray(arr))

你會做到這一點,而不是原因只是arr.toString()是數組覆蓋toString,而不是使用它們從ObjectArray.prototype.toString調用Array.prototype.join,繼承產生一個字符串,其中包含強制爲字符串的數組中的聯合在一起的條目)繼承一個。

相關問題