Что это за штука в JavaScript?

var something = {

wtf: null,
omg: null
};

Мои знания JavaScript все еще ужасно неоднородны с тех пор, как я в последний раз программировал с ним, но я думаю, что теперь большую часть из них я заново изучил. Кроме этого. Я не помню, чтобы когда-либо видел это раньше. Что это такое? А где я могу узнать об этом подробнее?

Теперь, когда на этот вопрос дан ответ, могу ли я добавить, что у AppJet есть простой учебник по JavaScript, урок по «объектам» объясняет это очень хорошо: appjet.com/learn-to-program/lessons/objects

Joe Pineda 07.10.2008 19:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
1
1 200
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Это синтаксис объектного литерала. «Wft» и «omg» - это имена свойств, а null и null - значения свойств.

Это эквивалентно:

var something = new Object();
something.wtf = null;
something.omg = null;

Ознакомьтесь с документацией mozilla по объектным литералам: http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals

А ну понятно. Итак, согласно ссылке, строка должна быть к "" или '' как объект к {}? Не уверен, что это лучший способ описать это, но я думаю, что теперь понял. Спасибо.

Daddy Warbox 07.10.2008 19:14

Я считаю, что это объект с двумя свойствами: WTF и OMG.

ты мог бы сказать

something.wtf = "myMessage";
alert(something.wtf);

проверить JSON.ORG

Это пример создания экземпляра встроенного объекта JavaScript.

Это литерал объекта. Фактически это эквивалентно следующему:

var something = new Object();
something["wtf"] = null;
something["omg"] = null;

Это Литерал объекта (или, иногда, ванильный объект в библиотеках с Hash-классами).

То же, что:

var o = new Object();
o.wtf = null;
o.omg = null;
Ответ принят как подходящий

Это литерал объекта с двумя свойствами. Обычно так люди создают ассоциативные массивы или хэши, потому что JS изначально не поддерживает эту структуру данных. Хотя обратите внимание, что это все еще полноценный объект, вы даже можете добавлять функции как свойства:

var myobj = {
    name: 'SO',
    hello: function() {
        alert(this.name);
    }
};

И вы можете перебирать свойства, используя цикл for:

for (i in myobj) {
    // myobj[i]
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}

JavaScript не поддерживает ассоциативные массивы / хеши? Я бы сказал, что все является ассоциативным массивом / хешем.

Glenn Moss 07.10.2008 20:46

Объяснение с точки зрения «Я хочу ассоциативный массив в Javascript» (именно для этого во многих случаях в конечном итоге используются объектные литералы)

От «Освоение массивов JavaScript»

Ассоциативный массив - это массив, в котором в качестве индекса используется строка вместо числа.

var normalArray    = [];
    normalArray[1] = 'This is an enumerated array';

    alert(normalArray[1]);   // outputs: This is an enumerated array

var associativeArray           = [];
    associativeArray['person'] = 'John Smith';

    alert(associativeArray['person']); // outputs: John Smith   

Javascript не имеет и не поддерживает ассоциативные массивы. Однако… Все массивы в Javascript являются объектами, а синтаксис объекта Javascript дает базовую эмуляцию ассоциативного массива. По этой причине приведенный выше пример кода действительно будет работать. Имейте в виду, что это не настоящий массив, и если вы попытаетесь его использовать, у него будут серьезные подводные камни. Элемент person в этом примере становится частью свойств и методов объекта Array, как и .length, .sort (), .splice () и все другие встроенные свойства и методы.

Вы можете просмотреть свойства объекта с помощью следующего цикла ...

var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) { 
   document.writeln(i+':'+associativeArray[i]+', '); 
   // outputs: one:First, two:Second, three:Third
};

В приведенном выше примере associativeArray.length будет равна нулю, потому что мы фактически ничего не помещали в массив, мы помещаем его в объект associativeArray. associativeArray [0] будет неопределенным.

Цикл в приведенном выше примере также подберет любые методы, свойства и прототипы, которые были добавлены в массив, а не только ваши данные. Многие проблемы, возникающие у людей с библиотекой Prototype, заключаются в том, что их ассоциативные массивы ломаются, потому что Prototype добавляет несколько полезных функций Prototype к объекту Array, а для i в циклах x подбирают эти дополнительные методы. Это проблема использования Array / objects в качестве ассоциативного массива для бедняков.

В качестве последнего примера предыдущий код будет работать независимо от того, определяете ли вы associativeArray как массив ([]), объект ({}), регулярное выражение (//), строку ("") или любой другой объект Javascript. .

Суть в том, что не пытайтесь использовать ассоциативные массивы, код для того, чем они являются - свойства объекта, а не массивы.

Этот код:

var something = {wtf:null}

Имеет такое же действие, как:

var something = {};
something.wtf=null;

Или из-за ненужного многословия:

var something=new Object();
something.wtf=null;

И полезно помнить, что последняя строка такая же, как

something["wtf"]=null;

Итак, вы можете использовать:

var myName = "wtf";
something[myName]=null;

Другие вопросы по теме