aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/object/index.html')
-rw-r--r--files/uk/web/javascript/reference/global_objects/object/index.html267
1 files changed, 267 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/object/index.html b/files/uk/web/javascript/reference/global_objects/object/index.html
new file mode 100644
index 0000000000..6fdb6e8adb
--- /dev/null
+++ b/files/uk/web/javascript/reference/global_objects/object/index.html
@@ -0,0 +1,267 @@
+---
+title: Object
+slug: Web/JavaScript/Reference/Global_Objects/Object
+tags:
+ - Constructor
+ - JavaScript
+ - NeedsTranslation
+ - Object
+ - TopicStub
+translation_of: Web/JavaScript/Reference/Global_Objects/Object
+---
+<div>{{JSRef}}</div>
+
+<p>Клас <code><strong>Object</strong></code> відображає один з <a href="/uk/docs/Web/JavaScript/Data_structures">типів даних JavaScript</a>. Він використовується для збереження різноманітних колекцій, що використовують ключі, та більш складних сутностей. Об'єкти можуть бути створені за допомогою конструктора {{jsxref("Object/Object", "Object()")}} або <a href="/uk/docs/Web/JavaScript/Reference/Operators/Ініціалізація_об’єктів">об'єктного ініціалізатора / літерального синтаксису</a>.</p>
+
+<h2 id="Опис">Опис</h2>
+
+<p>Майже усі об'єкти у JavaScript є екземплярами {{jsxref("Object")}}; типовий об'єкт успадковує властивості (в тому числі методи) від <code>Object.prototype</code>, хоча ці властивості можуть бути перекриті (перевизначені). Однак, можна навмисно створити <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">Object</span></font>, для якого це буде не так (наприклад, за допомогою {{jsxref("Object.create", "Object.create(null)")}}), або змінити його таким чином (наприклад, через {{jsxref("Object.setPrototypeOf")}}).</p>
+
+<p>Зміни у прототипі <code>Object</code> видимі <strong>усім</strong> об'єктам через ланцюжок прототипів, якщо властивості та методи, яких стосуються ці зміни, не були перевизначені далі у ланцюжку прототипів. Це надає дуже потужний, хоча й потенційно небезпечний, механізм для перевизначення або розширення поведінки об'єкта.</p>
+
+<p><font face="Open Sans, Arial, sans-serif">Конструктор </font><code>Object</code> створює обгортку об'єкта для заданого значення.</p>
+
+<ul>
+ <li>Якщо значенням є {{jsxref("null")}} або {{jsxref("undefined")}}, конструктор створить та поверне порожній об'єкт.</li>
+ <li>В іншому випадку, він поверне об'єкт того типу, який відповідає наданому значенню.</li>
+ <li>Якщо значення вже є об'єктом, конструктор поверне це значення.</li>
+</ul>
+
+<p>Під час виклику не у контексті конструктора, <code>Object</code> поводиться ідентично до <code>new Object()</code>.</p>
+
+<p>Дивіться також <a href="/uk/docs/Web/JavaScript/Reference/Operators/Ініціалізація_об’єктів">Ініціалізатор об'єктів / літеральний синтаксис</a>.</p>
+
+<h3 id="Видалення_властивості_обєкта">Видалення властивості об'єкта</h3>
+
+<p>У самому об'єкті не існує методів для видалення своїх властивостей (таких, як {{jsxref("Map.prototype.delete", "Map.prototype.delete()")}}). Щоб зробити це, необхідно скористатись <a href="/uk/docs/Web/JavaScript/Reference/Operators/delete">оператором delete</a>.</p>
+
+<h2 id="Конструктор">Конструктор</h2>
+
+<dl>
+ <dt>{{jsxref("Object/Object", "Object()")}}</dt>
+ <dd>Створює новий об'єкт <code>Object</code>. Це обгортка для наданого значення.</dd>
+</dl>
+
+<h2 id="Статичні_методи">Статичні методи</h2>
+
+<dl>
+ <dt>{{jsxref("Object.assign()")}}</dt>
+ <dd>Копіює значення усіх перелічуваних особистих властивостей з одного або більше об'єктів у цільовий об'єкт.</dd>
+ <dt>{{jsxref("Object.create()")}}</dt>
+ <dd>Створює новий об'єкт із вказаним прототипним об'єктом і властивостями.</dd>
+ <dt>{{jsxref("Object.defineProperty()")}}</dt>
+ <dd>Додає зазначену властивість, описану наданим дескриптором, до об'єкта.</dd>
+ <dt>{{jsxref("Object.defineProperties()")}}</dt>
+ <dd>Додає зазначені властивості, описані наданими дескрипторами, до об'єкта.</dd>
+ <dt>{{jsxref("Object.entries()")}}</dt>
+ <dd>Повертає масив, що містить усі пари <code>[key, value]</code> <strong>особистих</strong> перелічуваних рядкових властивостей данного  об'єкта.</dd>
+ <dt>{{jsxref("Object.freeze()")}}</dt>
+ <dd>Заморожує об'єкт: інший код не може видаляти або змінювати будь-які властивості.</dd>
+ <dt>{{jsxref("Object.fromEntries()")}}</dt>
+ <dd>Повертає новий об'єкт з ітерабельного об'єкта, що містить пари ключ-значення (зворотний до {{jsxref("Object.entries")}}).</dd>
+ <dt>{{jsxref("Object.getOwnPropertyDescriptor()")}}</dt>
+ <dd>Повертає дескриптор властивості для зазначенної властивості об'єкта.</dd>
+ <dt>{{jsxref("Object.getOwnPropertyDescriptors()")}}</dt>
+ <dd>Повертає об'єкт, що містить дескриптори всіх особистих властивостей об'єкта.</dd>
+ <dt>{{jsxref("Object.getOwnPropertyNames()")}}</dt>
+ <dd>Повертає масив, що містить імена всіх <strong>особистих</strong> перелічуваних і неперелічуванних властивостей даного об'єкта.</dd>
+ <dt>{{jsxref("Object.getOwnPropertySymbols()")}}</dt>
+ <dd>Повертає масив усіх символьних властивостей, знайдених безпосередньо на даному об'єкті.</dd>
+ <dt>{{jsxref("Object.getPrototypeOf()")}}</dt>
+ <dd>Повертає прототип вказаного об'єкта.</dd>
+ <dt>{{jsxref("Object.is()")}}</dt>
+ <dd>Перевіряє, чи мають два аргументи однакове значення. Прирівнює усі значення NaN (що відрізняється як від абстрактної рівності, так і від строгої рівності).</dd>
+ <dt>{{jsxref("Object.isExtensible()")}}</dt>
+ <dd>Визначає, чи дозволене розширення об'єкта.</dd>
+ <dt>{{jsxref("Object.isFrozen()")}}</dt>
+ <dd>Визначає, чи є об'єкт замороженим.</dd>
+ <dt>{{jsxref("Object.isSealed()")}}</dt>
+ <dd>Визначає, чи є об'єкт запечатанним.</dd>
+ <dt>{{jsxref("Object.keys()")}}</dt>
+ <dd>Повертає масив, що містить імена всіх <strong>особистих</strong> перелічуваних рядкових властивостей даного об'єкта.</dd>
+ <dt>{{jsxref("Object.preventExtensions()")}}</dt>
+ <dd>Запобігає будь-яким розширенням об'єкта.</dd>
+ <dt>{{jsxref("Object.seal()")}}</dt>
+ <dd>Запобігає можливості іншого коду видаляти властивості об'єкта.</dd>
+ <dt>{{jsxref("Object.setPrototypeOf()")}}</dt>
+ <dd>Встановлює прототип (тобто, внутрішню властивість <code>[[Prototype]]</code> об'єкта).</dd>
+ <dt>{{jsxref("Object.values()")}}</dt>
+ <dd>Повертає масив, який містить значення, що відповідають усім <strong>особистим</strong> перелічуваним рядковим властивостям даного об'єкта.</dd>
+</dl>
+
+<h2 id="Властивості_екземплярів">Властивості екземплярів </h2>
+
+<dl>
+ <dt>{{jsxref("Object.prototype.constructor")}}</dt>
+ <dd>Визначає функцію, що створює прототип об'єкта.</dd>
+ <dt>{{jsxref("Object.prototype.proto","Object.prototype.__proto__")}}</dt>
+ <dd>Вказує на об'єкт, що був використаний як прототип, коли створювався екземпляр об'єкта.</dd>
+ <dt>{{jsxref("Object.prototype.noSuchMethod","Object.prototype.__noSuchMethod__")}}</dt>
+ <dd>Дозволяє визначити функцію, яка буде виконуватись, коли на об'єкті викликатиметься неіснуючий елемент.</dd>
+</dl>
+
+<h2 id="Методи_екземплярів">Методи екземплярів</h2>
+
+<dl>
+ <dt>{{jsxref("Object.prototype.__defineGetter__()")}}</dt>
+ <dd>Прив'язує функцію до властивості, яка, під час звернення до неї, викликатиме цю функцію та повертатиме значення, яке повернула функція.</dd>
+ <dt>{{jsxref("Object.prototype.__defineSetter__()")}}</dt>
+ <dd>Прив'язує функцію до властивості, яка, під час присвоєння, виконує цю функцію, яка змінює властивість.</dd>
+ <dt>{{jsxref("Object.prototype.__lookupGetter__()")}}</dt>
+ <dd>Повертає функцію, прив'язану до вказаної властивості методом {{jsxref("Object.prototype.__defineGetter__()", "__defineGetter__()")}}.</dd>
+ <dt>{{jsxref("Object.prototype.__lookupSetter__()")}}</dt>
+ <dd>Повертає функцію, прив'язану до вказаної властивості методом {{jsxref("Object.prototype.__defineSetter__()", "__defineSetter__()")}}.</dd>
+ <dt>{{jsxref("Object.prototype.hasOwnProperty()")}}</dt>
+ <dd>Повертає булеве значення, що вказує, чи об'єкт містить вказану властивість як особисту властивість цього об'єкта, а не успадковану через ланцюжок прототипів.</dd>
+ <dt>{{jsxref("Object.prototype.isPrototypeOf()")}}</dt>
+ <dd>Повертає булеве значення, що вказує, чи присутній об'єкт, на якому викликається цей метод, у ланцюжку прототипів вказаного об'єкта.</dd>
+ <dt>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</dt>
+ <dd>Повертає булеве значення, що вказує, чи встановлений внутрішній <a href="/uk/docs/Web/JavaScript/Data_structures#Properties">атрибут ECMAScript [[Enumerable]]</a>.</dd>
+ <dt>{{jsxref("Object.prototype.toLocaleString()")}}</dt>
+ <dd>Викликає {{jsxref("Object.toString", "toString()")}}.</dd>
+ <dt>{{jsxref("Object.prototype.toString()")}}</dt>
+ <dd>Повертає рядок, що відображає об'єкт.</dd>
+ <dt>{{jsxref("Object.prototype.unwatch()")}}</dt>
+ <dd>Прибирає точку спостереження з властивості об'єкта.</dd>
+ <dt>{{jsxref("Object.prototype.valueOf()")}}</dt>
+ <dd>Повертає просту величину вказаного об'єкта.</dd>
+ <dt>{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}</dt>
+ <dd>Додає точку спостереження до властивості об'єкта.</dd>
+</dl>
+
+<h2 id="Приклади">Приклади</h2>
+
+<h3 id="Використання_Object_з_типами_undefined_та_null">Використання <code>Object</code> з типами <code>undefined</code> та <code>null</code></h3>
+
+<p>Наступні приклади зберігають порожній об'єкт <code>Object</code> в <code>o</code>:</p>
+
+<pre class="brush: js notranslate">var o = new Object();
+</pre>
+
+<pre class="brush: js notranslate">var o = new Object(undefined);
+</pre>
+
+<pre class="brush: js notranslate">var o = new Object(null);
+</pre>
+
+<h3 id="Використання_Object_для_створення_обєктів_Boolean">Використання <code>Object</code> для створення об'єктів <code>Boolean</code></h3>
+
+<p>Наступні приклади зберігають об'єкти {{jsxref("Boolean")}} у <code>o</code>:</p>
+
+<pre class="brush: js notranslate">// еквівалентно до o = new Boolean(true);
+var o = new Object(true);
+</pre>
+
+<pre class="brush: js notranslate">// еквівалентно до o = new Boolean(false);
+var o = new Object(Boolean());
+</pre>
+
+<h3 id="Прототипи_обєктів">Прототипи об'єктів</h3>
+
+<p>Змінюючи поведінку існуючих методів <code>Object.prototype</code>, розгляньте включення коду додаванням вашого розширення до чи після існуючої логіки. Наприклад, цей (неперевірений) код буде попередньо виконувати власну логіку перед тим, як буде виконано вбудовану логіку або інше розширення.</p>
+
+<p>Коли викликається функція, аргументи виклику містяться у подібній до масиву "змінній" <a href="/uk/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a>. Наприклад, у виклику <code>myFn(a, b, c)</code>, arguments, що знаходиться у тілі <code>myFn</code>, міститиме 3 подібні до масиву елементи, що відповідають <code>(a, b, c)</code>.</p>
+
+<p>Модифікуючи прототипи з хуками, просто передайте <code>this</code> та arguments (стан виклику) до поточної поведінки, викликавши <code>apply()</code> на функції. Цей шаблон може використовуватись для будь-яких прототипів, наприклад, <code>Node.prototype</code>, <code>Function.prototype</code>, і т. д.</p>
+
+<pre class="brush: js notranslate">var current = Object.prototype.valueOf;
+
+// Оскільки моя властивість "-prop-value" є наскрізною та не завжди
+// знаходиться в тому самому ланцюжку прототипів, я хочу змінити Object.prototype:
+Object.prototype.valueOf = function() {
+ if (this.hasOwnProperty('-prop-value')) {
+ return this['-prop-value'];
+ } else {
+ // Це не схоже на один з моїх об'єктів, тому повернемось
+ // до початкової поведінки, відтворивши поточну поведінку якнайкраще.
+ // Метод apply поводиться як "super" у деяких інших мовах.
+ // І хоча valueOf() не приймає аргументів, можливо, інший хук їх прийматиме.
+ return current.apply(this, arguments);
+ }
+}</pre>
+
+<p>Оскільки JavaScript, насправді, не має об'єктів підкласу, прототип є зручним обхідним рішенням для створення об'єкта у ролі "базового класу" з певними функціями, що діють як об'єкти. Наприклад:</p>
+
+<pre class="brush: js notranslate">var Person = function(name) {
+ this.name = name;
+ this.canTalk = true;
+};
+
+Person.prototype.greet = function() {
+ if (this.canTalk) {
+ console.log('Привіт, я ' + this.name);
+ }
+};
+
+var Employee = function(name, title) {
+ Person.call(this, name);
+ this.title = title;
+};
+
+Employee.prototype = Object.create(Person.prototype);
+
+Employee.prototype.greet = function() {
+ if (this.canTalk) {
+ console.log('Привіт, я ' + this.name + ', ' + this.title);
+ }
+};
+
+var Customer = function(name) {
+ Person.call(this, name);
+};
+
+Customer.prototype = Object.create(Person.prototype);
+
+var Mime = function(name) {
+ Person.call(this, name);
+ this.canTalk = false;
+};
+
+Mime.prototype = Object.create(Person.prototype);
+
+var bob = new Employee('Боб', 'будівельник');
+var joe = new Customer('Джо');
+var rg = new Employee('Ред Грін', 'майстер на всі руки');
+var mike = new Customer('Майк');
+var mime = new Mime('Мім');
+
+bob.greet();
+// Привіт, я Боб, будівельник
+
+joe.greet();
+// Привіт, я Джо
+
+rg.greet();
+// Привіт, я Ред Грін, майстер на всі руки
+
+mike.greet();
+// Привіт, я Майк
+
+mime.greet();</pre>
+
+<h2 id="Специфікації">Специфікації</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Специфікація</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object-objects', 'Object')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
+
+<div class="hidden">
+<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+</div>
+
+<p>{{Compat("javascript.builtins.Object")}}</p>
+
+<h2 id="Дивіться_також">Дивіться також</h2>
+
+<ul>
+ <li><a href="/uk/docs/Web/JavaScript/Reference/Operators/Ініціалізація_об’єктів">Ініціалізатор об'єктів</a></li>
+</ul>