Вы находитесь на странице: 1из 7

Объекты в JavaScript

Объект — это набор свойств и их значений в памяти, на которые можно сослаться с помощью
идентификатора.

const user = {
Виды объектов в JavaScript:
firstName: "Alex",
lastName: "NAV", 1. глобальный объект;
age: "40", 2. объектные типы:
isAdmin: true, • собственно объекты (коллекции свойств и их значений);
email: "email@email.ru", • массивы (коллекции данных, упорядоченных в виде списка
"user-adress": { элементов);
country: "Russia", • функции (фрагменты программного кода (подпрограммы),
sity: "Moscow" позволяющие формализовать определённую логику
}, поведения и обработки данных).
skills: ["html", "css", "JS"] 3. объекты-обертки.
};

Свойство объекта (или поле объекта) – это пара «ключ: значение»:


• ключ — это идентификатор (или имя) свойства (тип String или Symbol),
• значения могут быть любыми (любой тип, включая другие объекты).

Имя свойства должно соответствовать ограничениям, касающимся имён переменных JavaScript (например,
должно содержать только буквы, цифры или символы $ и _), но может быть невалидным или состоять из
нескольких слов, но тогда оно должно быть заключено в кавычки (например, “user-adress”).

Типы свойств объекта (отличаются определенными атрибутами):


1. свойство-значение (ассоциирует ключ со значением);
2. свойство-акцессор (ассоциирует ключ с одной из двух функций-акцессоров: геттер (get) и сеттер (set)).
СКАЧАНО С WWW.MEGASLIV.BIZ - ПРИСОЕДИНЯЙСЯ!
Объекты в JS

Обращение к свойствам объекта в JS


Для обращения к свойствам объекта в JavaScript используется два варианта записи:
1. запись «через точку»;
2. запись «через квадратные скобки».
Примеры:
const user = {
firstName: "Alex",
lastName: "NAV",
"user-adress": { // в кавычках, т.к. имя невалидное (через дефис)
country: "Russia",
sity: "Moscow"
},
skills: ["html", "css", "JS"]
};

Обращение к свойствам объекта «через точку»:


let value = user.lastName; // NAV

Обращение к свойствам объекта «через квадратные скобки»:


value = user["user-adress"]; // {country: "Russia", sity: "Moscow"}
value = user["user-adress"].country; // Russia
value = user["user-adress"]["country"]; // Russia

Кроме того, квадратные скобки ( [] ) в коде объектов также используются для обращения к свойству :
• имя которого является результатом выражения;
• заданному в кавычках (невалидному);
• к вычисляемому свойству ( [fruit] означает, что имя свойства необходимо взять из переменной fruit ).
Объекты в JS
Создание объекта в JavaScript
Объект в JavaScript может быть создан следующими способами:
1. с помощью фигурных скобок {…} с необязательным списком свойств (литеральная нотация);
2. с помощью "конструктора" объекта new Object(param ...) (где Object – любая функция-конструктор
объекта);
3. с помощью метода Object.create(nameKlass) (создание объекта из прототипа).
C помощью литеральной нотации :
const user = {
firstName: "Alex",
age: "40",
};

C помощью "конструктора" объекта new Object() (где Object – конструктор, создающий объект-обёртку.):
let value = new Object()
let oldUser = new Object(null)
let newUser = new Object(user) // копирование по ссылке (newUser == user)
console.log(value); // {}
console.log(oldUser); // {}
console.log(newUser); // {firstName: "Alex", age: "40"}

C помощью метода Object.create(nameKlass) (создание объекта из прототипа):


const newUser = Object.create(user); // создает новый объект (НЕ копирование по ссылке, newUser != user)
const oldUser = Object.create(user, { car: { value: "Nissan" } });
let value = Object.getPrototypeOf(oldUser);
console.log(newUser.firstName); // Alex
console.log(oldUser.car); // Nissan
console.log(value); // {firstName: "Alex", age: "40"}
Объекты в JS
Работа со свойствами объекта в JavaScript
Добавление свойства в объект:
user.isAdmin = true; // добавлено новое свойство 'isAdmin' типа Boolean
user['gender'] = "Male"; // добавлено новое свойство 'gender' типа String
console.log(user.isAdmin); // true
console.log(user.gender); // Male

// Добавление свойства в несуществующий вложенный объект приведет к ошибке


user.prop.basic = "basic"; // Uncaught TypeError: Cannot set property 'basic' of undefined
Удаление свойства из объекта:
delete object.property
delete object['property']
delete object[pos] // удаление элемента из массива
delete property // удаляет свойства глобального объекта
Проверка существования свойства объекта:
Способы проверки существования свойства объекта JavaScript:
• сравнением его с undefined (не применять, если свойство существует, но содержит значение undefined);
• с помощью оператора in.
user = {
age: 35,
myName: undefined,
};
console.log(user.noSuchProperty === undefined); // true означает "свойства нет"
console.log(user.myName === undefined); // true означает "свойства нет", но оно существует!
console.log("age" in user); // true, user.age существует
console.log("name" in user); // false, user.name не существует

При обращении к свойству, которого нет, возвращается undefined.


Объекты в JS
Получение перечня перечисляемых свойств объекта ( метод Object.keys() ):
Метод Object.keys возвращает массив строковых элементов, соответствующих именам перечисляемых
свойств, найденных непосредственно в самом объекте.
let user = {
firstName: "Alex",
isAdmin: true,
"user-adress": {
country: "Russia",
sity: "Moscow",
},
skills: ["html", "css", "JS"],
};
console.log(Object.keys(user)); // (4) ["firstName", "isAdmin", "user-adress", "skills"]

// Массив
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // Array(3) [ "0", "1", "2" ]

// Массивоподобный объект
var obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // Array(3) [ "0", "1", "2" ]
// Массивоподобный объект со случайным порядком ключей
var an_obj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(an_obj)); // Array(3) ["2", "7", "100"]

// Свойство getFoo является не перечисляемым свойством


var my_obj = Object.create({},{getFoo: {value: function () {return this.foo;},},});
my_obj.foo = 1;
console.log(Object.keys(my_obj)); // консоль: ['foo']
Объекты в JS
Получение массива перечисляемых свойств объекта в формате [key, value] (метод Object.entries() ) :
Метод Object.entries() возвращает массив собственных перечисляемых свойств указанного объекта в формате
[key, value]:
let user = {
firstName: "Alex",
isAdmin: true,
"user-adress": {
country: "Russia",
sity: "Moscow",
},
skills: ["html", "css", "JS"],
};
console.log(Object.entries(user)); // (4) [Array(2), Array(2), Array(2), Array(2)] , т.е. 0: (2) ["firstName", "Alex"],
1: (2) ["isAdmin", true], 2: (2) ["user-adress", {…}], 3: (2) ["skills", Array(3)]
console.log(Object.keys(user)); // (4) ["firstName", "isAdmin", "user-adress", "skills"]

// Массивоподобный объект
var obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]

// Массивоподобный объект со случайным порядком ключей


var an_obj = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]

// Аргумент, не являющийся объектом, приводится к объекту


console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]

// Для примитивных типов возвращается пустой массив (т.к. у них нет свойств)
console.log(Object.entries(100)); // [ ]
Метод replace()

Дополнительные материалы:
1. Объекты в JavaScript
2. Конструкторы, создание объектов через "new«
3. Оператор new
4. Методы прототипов, объекты без свойства __proto__
5. Методы конструктора Object
6. Дескрипторы свойств объекта в JavaScript (будет отдельная тема, см. по перечисляемым свойствам)

https://flagman.top/