#javascript
Вопрос:
Какова роль «массива объектов» здесь:
var is_array = function(input){
if(toString.call(input)==="[object array]")//what is role of "object array" here?
return true
return false
}
console.log(is_array('welcome'))
console.log(is_array([1,2,3,4,5]))
Комментарии:
1. Что это может быть, основываясь на остальной части кода? Что произойдет, если вы запустите «toString.call» с различными типами данных? Посмотрим, сможешь ли ты справиться с этим. Это просто строка: то, что она означает , можно обнаружить в консоли через несколько минут.
Ответ №1:
Код предназначен для определения того, является ли аргумент массивом. Исторически сложилось так, что существует несколько способов сделать это, хотя в наши дни эта Array.isArray
функция действительно делает все эти трюки устаревшими.
Прежде всего, он действительно должен проверить наличие «[массива объектов]» (с большой буквы «А»). Я полагаю, это была опечатка в вашем вопросе?
В любом случае, здесь хитрость заключается в использовании глобальной функции toString
, которая является toString
методом глобального объекта ( globalThis.toString
). Вы можете подумать , что могли бы просто позвонить input.toString()
, но эта функция была переопределена прототипом массива и не возвращает тот же результат. Он вернет элементы массива в виде строки, разделенной запятыми. Однако глобальная toString
функция, по сути, будет делать то, что Object.toString
делает: предоставлять универсальную строку в формате «[тип объекта]».
С помощью call
этого мы можем предоставить объект, который должен быть строковым. И таким образом мы получаем «[массив объектов]», что является хорошим признаком того, что у нас есть массив.
Опять же, в настоящее время предпочтительным методом является просто вызов Array.isArray(input)
.
Комментарии:
1. Это ответ на ваш вопрос? Не могли бы вы дать обратную связь?