私は、をこのをjavascriptに明示的に設定するためにコールと適用が使用されることを知っています。 次のコードは、の配列オブジェクトであることを確認することです。それはコンソール[オブジェクト配列]を操作します。toString.call(配列)は実際に何をしていますか?
var arr = [];
console.log(toString.call(arr));
誰も私が何をしているか、コードtoString.call(arr)
理解させることはできますか?
私は、をこのをjavascriptに明示的に設定するためにコールと適用が使用されることを知っています。 次のコードは、の配列オブジェクトであることを確認することです。それはコンソール[オブジェクト配列]を操作します。toString.call(配列)は実際に何をしていますか?
var arr = [];
console.log(toString.call(arr));
誰も私が何をしているか、コードtoString.call(arr)
理解させることはできますか?
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()
の配列は、Object
から継承する配列(はArray.prototype.join
)を使用するのではなく、配列がtoString
をオーバーライドし、配列に結合された項目を含む文字列が文字列に変換されます。