aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/constructor
diff options
context:
space:
mode:
authorRyan Johnson <rjohnson@mozilla.com>2021-04-29 16:16:42 -0700
committerGitHub <noreply@github.com>2021-04-29 16:16:42 -0700
commit95aca4b4d8fa62815d4bd412fff1a364f842814a (patch)
tree5e57661720fe9058d5c7db637e764800b50f9060 /files/uk/web/javascript/reference/global_objects/object/constructor
parentee3b1c87e3c8e72ca130943eed260ad642246581 (diff)
downloadtranslated-content-95aca4b4d8fa62815d4bd412fff1a364f842814a.tar.gz
translated-content-95aca4b4d8fa62815d4bd412fff1a364f842814a.tar.bz2
translated-content-95aca4b4d8fa62815d4bd412fff1a364f842814a.zip
remove retired locales (#699)
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/object/constructor')
-rw-r--r--files/uk/web/javascript/reference/global_objects/object/constructor/index.html237
1 files changed, 0 insertions, 237 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/object/constructor/index.html b/files/uk/web/javascript/reference/global_objects/object/constructor/index.html
deleted file mode 100644
index ef2362cdec..0000000000
--- a/files/uk/web/javascript/reference/global_objects/object/constructor/index.html
+++ /dev/null
@@ -1,237 +0,0 @@
----
-title: Object.prototype.constructor
-slug: Web/JavaScript/Reference/Global_Objects/Object/constructor
-tags:
- - JavaScript
- - Object
- - Властивість
- - прототип
-translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor
----
-<div>{{JSRef}}</div>
-
-<p>Повертає посилання на функцію-конструктор {{jsxref("Object", "об'єкта")}}, що створила екземпляр об'єкта. Зауважте, що значення цієї властивості є посиланням на саму функцію, а не рядком, що містить ім'я функції. Значення, доступне лише для читання, мають лише примітивні значення, як то <code>1</code>, <code>true</code> або <code>"test"</code>.</p>
-
-<h2 id="Опис">Опис</h2>
-
-<p>Усі об'єкти (за виключенням об'єктів, створених через <code>Object.create(null)</code>) матимуть властивість <code>constructor</code>. Об'єкти, створені без явного використання функції-конструктора (тобто, об'єктними та масивними літералами), матимуть властивість <code>constructor</code>, що вказує на конструктор фундаментального об'єкта для цього об'єкта.</p>
-
-<pre class="brush: js">var o = {};
-o.constructor === Object; // true
-
-var o = new Object;
-o.constructor === Object; // true
-
-var a = [];
-a.constructor === Array; // true
-
-var a = new Array;
-a.constructor === Array; // true
-
-var n = new Number(3);
-n.constructor === Number; // true</pre>
-
-<h2 id="Приклади">Приклади</h2>
-
-<h3 id="Відображення_конструктора_об'єкта">Відображення конструктора об'єкта</h3>
-
-<p>Наступний приклад створює конструктор <code>Tree</code> та об'єкт цього типу, <code>theTree</code>. Далі приклад демонструє властивість <code>constructor</code> об'єкта <code>theTree</code>.</p>
-
-<pre class="brush: js">function Tree(name) {
- this.name = name;
-}
-
-var theTree = new Tree('Redwood');
-console.log('theTree.constructor дорівнює ' + theTree.constructor);
-</pre>
-
-<p>Цей приклад виведе наступний результат:</p>
-
-<pre class="brush: js">theTree.constructor дорівнює function Tree(name) {
- this.name = name;
-}
-</pre>
-
-<h3 id="Зміна_конструктора_об'єкта">Зміна конструктора об'єкта</h3>
-
-<p>Наступний приклад покаже як можна змінити конструктор загальних об'єктів. Тільки <code>true</code>, <code>1</code> та <code>"test"</code> не зміняться, оскілки їхні конструктори доступні лише для читання. Цей приклад демонструє, що не завжди безпечно покладатися на властивість об'єкта <code>constructor</code>.</p>
-
-<pre class="brush:js">function Type () {}
-
-var types = [
- new Array(),
- [],
- new Boolean(),
- true, // лишається незмінним
- new Date(),
- new Error(),
- new Function(),
- function () {},
- Math,
- new Number(),
- 1, // лишається незмінним
- new Object(),
- {},
- new RegExp(),
- /(?:)/,
- new String(),
- 'test' // лишається незмінним
-];
-
-for (var i = 0; i &lt; types.length; i++) {
- types[i].constructor = Type;
- types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()];
-}
-
-console.log(types.join('\n'));
-</pre>
-
-<p>Цей приклад виведе наступний результат (коментарі додані для довідки):</p>
-
-<pre class="brush: js">function Type() {},false, // new Array()
-function Type() {},false, // []
-function Type() {},false,false // new Boolean()
-function Boolean() {
- [native code]
-},false,true // true
-function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600 // new Date()
-function Type() {},false,Error // new Error()
-function Type() {},false,function anonymous() {
-
-} // new Function()
-function Type() {},false,function () {} // function () {}
-function Type() {},false,[object Math] // Math
-function Type() {},false,0 // new Number()
-function Number() {
- [native code]
-},false,1 // 1
-function Type() {},false,[object Object] // new Object()
-function Type() {},false,[object Object] // {}
-function Type() {},false,/(?:)/ // new Regexp()
-function Type() {},false,/(?:)/ // /(?:)/
-function Type() {},false, // new String()
-function String() {
- [native code]
-},false,test</pre>
-
-<h3 id="Зміна_конструктора_функції">Зміна конструктора функції</h3>
-
-<p>Переважно ця властивість використовується для визначення функції як <strong>функції-конструктора</strong> з подальшим викликом її з оператором <strong>new</strong> та наслідуванням через ланцюжок прототипів.</p>
-
-<pre class="brush: js">function Parent() {}
-Parent.prototype.parentMethod = function parentMethod() {};
-
-function Child() {}
-Child.prototype = Object.create(Parent.prototype); // перевизначення дочірнього прототипу на прототип Parent
-
-Child.prototype.constructor = Child; // повернення початкового конструктора прототипу Child</pre>
-
-<p>Але коли нам потрібно виконувати цей останній рядок? Нажаль, відповідь - залежить від обставин.</p>
-
-<p>Спробуємо визначити випадки, коли переприсвоєння початкового конструктора зіграє важливу роль, а коли воно стане додатковим непотрібним рядком коду.</p>
-
-<p>Візьмемо наступний випадок: об'єкт має метод <strong>create</strong> для створення самого себе.</p>
-
-<pre class="brush: js">function Parent() {};
-function CreatedConstructor() {}
-
-CreatedConstructor.prototype = Object.create(Parent.prototype);
-
-CreatedConstructor.prototype.create = function create() {
- return new this.constructor();
-}
-
-new CreatedConstructor().create().create(); // TypeError undefined is not a function, оскільки constructor === Parent</pre>
-
-<p>У наведеному вище прикладі виняток виникне тому, що конструктор посилається на Parent.</p>
-
-<p>Щоб уникнути цього, просто призначте потрібний конструктор, який ви збираєтесь використовувати.</p>
-
-<pre class="brush: js">function Parent() {};
-function CreatedConstructor() {}
-
-CreatedConstructor.prototype = Object.create(Parent.prototype);
-CreatedConstructor.prototype.constructor = CreatedConstructor; // призначте конструктор, який будете використовувати
-
-CreatedConstructor.prototype.create = function create() {
- return new this.constructor();
-}
-
-new CreatedConstructor().create().create(); // так непогано</pre>
-
-<p>Гаразд, тепер зрозуміло, чому зміна конструктора може бути досить корисною.</p>
-
-<p>Розглянемо інший випадок.</p>
-
-<pre class="brush: js">function ParentWithStatic() {}
-
-ParentWithStatic.startPosition = { x: 0, y:0 };
-ParentWithStatic.getStartPosition = function getStartPosition() {
- return this.startPosition;
-}
-
-function Child(x, y) {
- this.position = {
- x: x,
- y: y
- };
-}
-
-Child.prototype = Object.create(ParentWithStatic.prototype);
-Child.prototype.constructor = Child;
-
-Child.prototype.getOffsetByInitialPosition = function getOffsetByInitialPosition() {
- var position = this.position;
- var startPosition = this.constructor.getStartPosition(); // error undefined is not a function, оскільки конструктор - Child
-
- return {
- offsetX: startPosition.x - position.x,
- offsetY: startPosition.y - position.y
- }
-};</pre>
-
-<p>В цьому прикладі нам треба залишити батьківський конструктор, щоб все працювало як слід.</p>
-
-<p><strong>Висновок</strong>: ручна зміна або встановлення конструктора може призвести до різноманітних та іноді заплутаних наслідків. Щоб запобігти цьому, визначте роль конструктора у кожному конкретному випадку. В більшості випадків конструктор не використовується, і в перепризначенні немає необхідності.</p>
-
-<h2 id="Специфікації">Специфікації</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Специфікація</th>
- <th scope="col">Статус</th>
- <th scope="col">Коментар</th>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-15.2.4.1', 'Object.prototype.constructor')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td></td>
- </tr>
- <tr>
- <td>{{SpecName('ES1')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Початкове визначення. Реалізоване у JavaScript 1.1.</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.constructor")}}</p>
-
-<div id="compat-mobile"></div>