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
, а не используют тот, который они наследуют от Object
(Array.prototype.toString
вызывает Array.prototype.join
, производя строку, содержащую объединенные записи в массиве, принужденном к строкам).