Все в JavaScript представляет собой объект. Самый простой способ создать объект — использовать символ объекта:
var x = {};
var y = {
name: "Pete",
age: 15
};
Тип данных объекта — «object»:
typeof {} // "object"
Точка
Вы можете указывать и читать свойства объекта используя точку:
y.name // "Pete" y.age // 15 x.name = y.name + " Pan" // "Pete Pan" x.age = y.age + 1 // 16
Массив
Также можно указывать и читать свойства объекта используя массив, что позволяет Вам динамически выбирать свойство:
var operations = {
increase: "++",
decrease: "--"
}
var operation = "increase";
operations[operation] // "++";
operations["multiply"] = "*"; // "*"
Итерация
Производить операции над объектами проще всего в цикле for:
var obj = {
name: "Pete",
age: 15
};
for(key in obj) {
alert("key is "+[key]+", value is "+obj[key]);
}
Следует отметить, что цикл может быть испорчен путем расширения Object.prototype (обратитесь к статье Object.prototype), поэтому будьте внимательны при использовании других библиотек.
jQuery предоставляет функцию each для операций над свойствами объектов а также над элементами массивов:
jQuery.each(obj, function(key, value) {
console.log("key", key, "value", value);
});
Недостатком является то, что функция вызывается в контексте каждого значения, поэтому Вы теряете контекст Вашего собственного объекта. Более подробно об этом ниже в разделе «Функции».
Логическое значение по умолчанию
Независимо от того, есть-ли у объекта свойства или нет, он никогда по умолчанию не является false:
!{} // false
Прототип
Все объекты имеют свойство протоипа. Во всех случаях, когда интерпретатор ищет свойство, он также проверяет прототип. jQuery повсеместно использует прототипы для добавления методов в экземпляры объектов.
var form = $("#myform");
form.clearForm; // undefined
form.fn.clearForm = function() {
return this.find(":input").each(function() {
this.value = "";
}).end();
};
form.clearForm() // работает для всех экземпляров объектов jQuery, так
как новый метод был добавлен в прототип
(В этом примере требуется уточнение: как можно изменить прототип, когда слово "prototype" нигде не фигурирует? Подразумевается, что form.fn просто псевдоним для form.prototype, но если это так, то это должно быть объяснено .: -?)
In javascript: окончательное издание пятой серии, сказано: не добавлять атрибут к Object.prototype

