Object
Object - у JavaScript є колекції властивостей і методів. Методом називається функція, яка є членом об'єкта. Властивість є значення або набір значень (у вигляді масиву або об'єкта), який є членом об'єкта і може містити будь який тип даних.
Синтаксис:
// Ініціалізатор об'єкта або літерал
{[value [, value [... value]]]}
// Виклик в якості конструктора
new Object ([value])
Параметри:
value - будь-яке значення.
Опис:
Object це більш складна структура даних. Object може містити властивості і методи. Властивість об'єкта це значення будь якого типу яке належить об'єкту. Метод об'єкта це функція яка належить об'єкту.
Конструктор Object створює об'єкт-обгортку для переданого значення. Якщо значенням є null або undefined, створює і повертає порожній об'єкт, в іншому випадку повертає об'єкт такого типу, який відповідає переданому значенням.
JavaScript підтримує 4 типи об'єктів:
Всі об'єкти в JavaScript підтримують властивості і методи expando, які можуть додаватися і видалятися під час виконання. Ці властивості і методи можуть мати будь-які імена і визначатися числами. Якщо ім'я властивості або методу є простим ідентифікатором, воно може бути зазначено через точку після імені об'єкта, наприклад myObj.name, myObj.age і myObj.getAge, як показано в наступному коді.
var myObj = new Object();
myObj.name = "Fred";
myObj.age = 42;
myObj.getAge =
function () {
return this.age;
};
Властивості:
Методи конструктора Object:
- Object.assign() - Створює новий об'єкт шляхом копіювання значень всіх власних перелічуваних властивостей з одного або більше вихідних об'єктів в цільовий об'єкт.
- Object.create() - Створює новий об'єкт із зазначеними об'єктом прототипу і властивостями.
- Object.defineProperty() - Додає до об'єкта іменовану властивість, що описується переданим дескриптором.
- Object.defineProperties() - Додає до об'єкта іменовані властивості, описувані переданими дескрипторами.
- Object.freeze() - Заморожує об'єкт: інший код не зможе видалити або змінити ніяке властивість.
- Object.getOwnPropertyDescriptor() - Повертає дескриптор властивості для іменованого властивості об'єкта.
- Object.getOwnPropertyNames() - Повертає масив, що містить імена властивостей об'єкту.
- Object.getOwnPropertySymbols() - Повертає масив всіх символьних властивостей, знайдених безпосередньо в переданій об'єкті.
- Object.getPrototypeOf() - Повертає прототип зазначеного об'єкта.
- Object.is() -порівнює, чи є два значення помітними (тобто, однаковими).
- Object.isExtensible() - Визначає, чи дозволено розширення об'єкта.
- Object.isFrozen() - Визначає, чи був об'єкт заморожений.
- Object.isSealed() - Визначає, чи є об'єкт запечатаним (sealed).
- Object.keys() - Повертає масив, що містить імена всіх своїх перелічуваних властивостей переданого об'єкта.
- Object.observe() - Асинхронно спостерігає за змінами в об'єкті.
- Object.preventExtensions() - Запобігає будь-яке розширення об'єкта.
- Object.seal() - Запобігає видалення властивостей об'єкта іншим кодом.
- Object.setPrototypeOf() -встановлює прототип(внутрішню властивість [[Prototype]]).
Екземпляри і прототип об'єкта Object:
Всі об'єкти в JavaScript є нащадками Object; всі об'єкти успадковують методи і властивості з прототипу об'єкта Object.prototype, хоча вони і можуть бути перевизначені. Наприклад, прототипи інших конструкторів скасовують властивість constructor і надають свої власні методи toString().
Властивості:
- Object.constructor - Визначає функцію, яка створює прототип об'єкта.
- Object.__proto__ - Вказує на об'єкт, який використовувався в якості прототипу при інстанцірувані об'єкта.
- Object.__noSuchMethod__ - Дозволяє визначити функцію, виконуються при виклику в якості методу не певного члена об'єкта.
- Object.__count__ - Використовувалося для повернення кількості перерахованих властивостей, певних безпосередньо на призначеному для користувача об'єкті, але було видалено.
- Object.__parent__ -Використовувалося для вказівки контексту об'єкта, але було видалено.
Методи:
- Object.__defineGetter__() - Асоціює функцію з властивістю, яка, при доступі до нього, виконує цю функцію і повертає її значення, що повертається.
- Object.__defineSetter__() - Асоціює функцію з властивістю, яке, при його установці, виконує цю функцію, змінює властивість.
- Object.__ lookupGetter__() - Повертає функцію, пов'язану із зазначеним властивістю методом __defineGetter__.
- Object.__lookupSetter__() - Повертає функцію, пов'язану із зазначеним властивістю методом __defineSetter__.
- Object.hasOwnProperty() - Повертає логічне значення, яке вказує, чи містить вказане властивість безпосередньо об'єкт, або він успадкував його по ланцюжку прототипів.
- Object.isPrototypeOf() - Повертає логічне значення, яке вказує, чи перебуває зазначений об'єкт в ланцюжку прототипів об'єкта, на якому був викликаний даний метод.
- Object.propertyIsEnumerable() - Повертає логічне значення, яке вказує, чи встановлений внутрішній атрибут ECMAScript DontEnum.
- Object.toSource() - Повертає рядок, що містить вихідний код об'єкта в літеральної формі, що представляє об'єкт, на якому був викликаний даний метод; ви можете використовувати це значення для створення нового об'єкта.
- Object.toLocaleString() - повертає рядкове представлення об'єкту згідно локалі.
- Object.toString() - Повертає строкове представлення об'єкту.
- Object.unwatch() - Видаляє точку спостереження (watchpoint) зі властивості об'єкта.
- Object.valueOf() - Повертає значення примітиву зазначеного об'єкта.
- Object.watch() - Додає точку спостереження (watchpoint) до властивості об'єкта.
Приклад:
//спосіб 1- через конструктор Object
var obj=new Object();
obj.p=1;
//спосіб 2, без new
var obj2=Object();
obj2.p=2;
//спосіб 3
var obj3=new Object({p:3,u:0});
//спосіб 4, літеральний
var obj4={p:4.2};
Створимо об'єкт User який буде містити властивості name і year:
var User={};//створюємо об'єкт
User.name='JS'; //присвоюємо значення властивості name
User.year=2016; //присвоюємо значення властивості year
alert('name='+User.name+' year='+User.year);