[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отличие массивов от объектов
ak167
Всем привет!
Ребят, подскажите чем отличаются массивы от объектов? Сейчас учу javascript и не могу понять разницы между ними, вроде одно и то же.
stump
Я бы понял функция и объект как одно и тоже, но массив - он же намного отличается от объекта.

_____________
Трус не играет в хокей
sergeiss
Цитата (ak167 @ 11.05.2015 - 19:44)
подскажите чем отличаются массивы от объектов? ...не могу понять разницы между ними

В JS всё является объектом :) В том числе и массив. Только массив - это специфический объект, имеющий определенные свойства и методы. Он, в некотором смысле, упрощает работу с большими объемами данных, структурируя их в виде, называемом "массив".

В то же время, да, обращаться к элементам массивов и к объектам можно полностью идентичными способами. Например, глядя на запись
a[ 25 ] = 10;

нельзя сказать однозначно, является ли "a" массивом или это объект.
Мы можем написать
a[ 'house' ] = 33;

и также будет не понятно, что такое "a" - либо это массив (который тоже объект и которому мы назначаем свойство "house"), либо это просто объект.

Поначалу это может "смущать" и вносить путаницу в голову, но если немного поработаешь с JS, то научишься легко это всё различать и правильно использовать.

Цитата (stump @ 11.05.2015 - 19:58)
но массив - он же намного отличается от объекта.

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

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
volter9
Цитата (sergeiss @ 11.05.2015 - 20:39)
и также будет не понятно

Тут то точно что var a это объект, т.к. массив содержит в себе только числовые ключи (я говорю именно про элементы которые он хранит, свойства вроде .length не в счет). Хотя в принципе, это плохая практика назначать кастомные свойства к non-plain объектам.

ak167, проще говоря массив (aka Array) это контейнер для списков/последовательностей, а объект (plain object) это контейнер для данных "ключ: значение".

Пример массива:
var numbers = [1, 1, 2, 3, 5, 8, 13, 21];

Пример объекта:
var user = {
username: 'foobar',
name: 'Вася',
lastname: 'Борисов'
};


_____________
Мой блог
sergeiss
Цитата (volter9 @ 11.05.2015 - 22:07)
проще говоря массив (aka Array) это контейнер для списков/последовательностей, а объект (plain object) это контейнер для данных "ключ: значение".

В массив можно также добавить новые свойства :) Код ниже полностью валидный, надо только понимать, что он делает. Где добавятся новые элементы массива, а где новые свойства?

var a = [ 1, 5, 'abc' ];
a[10] = 346;
a['c'] = 22;
a.b = 33;


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
volter9
sergeiss
Я не говорил что нельзя, я говорил что это не очень хорошо, т.к. тебе нужно будет знать что в массиве есть эти свойства и что каждое из этих свойствах представляет из себя. По этому, лучше не добавлять кастомные свойства в чужые объекты. Хороший пример того что лучше не надо использовать кастомные свойства это вот эта статья:
http://learningwebgl.com/blog/?p=28
triangleVertexPositionBuffer.itemSize = 3;
triangleVertexPositionBuffer.numItems = 3;


Цитата (sergeiss @ 11.05.2015 - 22:18)
a[10] = 346;

А потом будет недопонимание потому что .length будет = 11.

_____________
Мой блог
Guest
rolleyes.gif
Игорь_Vasinsky
Объекты как ассоциативные массивы



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sergeiss
Игорь, тема может и актуальная для кого-то. Но она ж старая! smile.gif 2 года уже.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Guest
ohmy.gif ohmy.gif ohmy.gif ohmy.gif ohmy.gif ohmy.gif ohmy.gif ohmy.gif ohmy.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.