Понимание противоречия: почему typeof Array with Objects возвращает «Object»
Разработчики могут столкнуться с удивительным явлением: при вызове typeof для массива содержащие объекты, он необъяснимым образом возвращает «объект» вместо «массив». В этой статье рассматривается это, казалось бы, противоречивое поведение.
Рассмотрев пример, давайте проиллюстрируем проблему:
$.ajax({
url: 'http://api.twitter.com/1/statuses/user_timeline.json',
data: { screen_name: 'mick__romney'},
dataType: 'jsonp',
success: function(data) {
console.dir(data); //Array[20]
alert(typeof data); //Object
}
});
Хотя console.dir(data) правильно идентифицирует переменную как массив, typeof data нелепо возвращает «Object».
Объяснение кроется в своеобразной спецификации JavaScript, где оператор typeof возвращает тип внутреннего свойства [[Class]] объекта. В случае массивов их свойству [[Class]] присвоено значение «Array», но при окружении объектами свойство [[Class]] меняется на «Object».
Для обеспечения точной проверки типов , разработчики могут использовать различные подходы:
Понимая эту особенность и используя эти методы, разработчики могут эффективно обрабатывать массивы объектов в своем коде JavaScript.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3