Какая разница в этом коде (JS)? - PullRequest
1 голос
/ 01 мая 2011

Мне интересно, в чем разница между этим кодом:

var c = [{"test": 1}];

и этим кодом

var c = {"test": 1};

Firebug говорит, что оба они являются объектами, но если вы выполните console.log (c.test) в первом примере он вернет "undefined".Поэтому мне интересно, что это такое и как получить доступ к первому примеру?

Ответы [ 2 ]

8 голосов
/ 01 мая 2011

Первый - это массив, содержащий один элемент, который является объектом {"test": 1}, а второй - сам объект {"test": 1}.

Итак, с первым вы можете c[0].test, а со вторым вы можете c.test.

1 голос
/ 01 мая 2011

Первый c - это массив, содержащий объект, второй - объект.

В JavaScript все является объектом, поэтому Firebug говорит, что они оба являются объектами. Чтобы получить свойство test из первого c, вы должны ссылаться на первый элемент массива (являющийся фактическим объектом), поэтому c[0].test вернет 1. Если вам нужно знать, является ли c (экземпляром) массивом, попробуйте набрать c instanceof Array в консоли Firebug и запустить его (возвращает true). Чтобы убедиться, что массив также является объектом, выполните то же самое для c instanceof Object (возвращает true).

...