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

Смежные вопросы