JavaScript

Вопрос по типу переменной на javascript

это массив или объект ?

var task =[
{
"name" : "",
"symbol" : "H",
"atomic" : "1",
"mass" : "",
"num_of_ne":"0",
"num_of_ele":"",
"answer" : {
"name" : "Hydrogen",
"symbol" : "",
"atomic" : "",
"mass" : "1",
"num_of_ne":"",
"num_of_ele":"0"
}
},
]
Это массив, в массиве объект. В объекте ещё один объект. Массив тоже является объектом.
По идеологии ООП всё должно быть объектом.
Оператор typeof(task) возвращает тип (как строку). Для массива вернёт "object".
Отличить массив от других объектов можно так:
task.constructor == Array
или так:
task.constructor.name // результат: "Array"
ДО
Дмитрий Осокин
58 065
Лучший ответ
Добавлю к лучшему ответу еще мелкую инфу:
• в JS не все является объектом, есть и примитивы (boolean, number, string, и т. д.)
• тип объекта определяется его прототипом. В прототипе хранятся общие методы
• объект прототипа тоже может иметь свой прототип (так в JS реализуется наследование)
• по правилам языка, объектные типы (и их функции-конструкторы) именуются с заглавной буквы, а экземпляры объектов - со строчной
• корректный способ проверки на объектный тип - не через конструктор, а оператором instanceof (он проверяет всю цепочку прототипов). Например, в данном случае, task instanceof Array вернет true, а task[0] instanceof Array - false. При проверке их на instanceof Object, результат будет true в обоих случаях, так как прототипом Array является Object.
Ярослав сказал:
> в JS не все является объектом, есть и примитивы (boolean, number, string, и т. д.)

Комментатор Ярослав видать уже засиделся на ответах и у него начал развиваться рак мозга. Наверное он думает, что и оператор вызова функции, и аргументы функции тоже не являются объектами. )))