aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/keys
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:43:23 -0500
commit218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (patch)
treea9ef8ac1e1b8fe4207b6d64d3841bfb8990b6fd0 /files/uk/web/javascript/reference/global_objects/object/keys
parent074785cea106179cb3305637055ab0a009ca74f2 (diff)
downloadtranslated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.gz
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.tar.bz2
translated-content-218934fa2ed1c702a6d3923d2aa2cc6b43c48684.zip
initial commit
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/object/keys')
-rw-r--r--files/uk/web/javascript/reference/global_objects/object/keys/index.html171
1 files changed, 171 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/object/keys/index.html b/files/uk/web/javascript/reference/global_objects/object/keys/index.html
new file mode 100644
index 0000000000..796209d575
--- /dev/null
+++ b/files/uk/web/javascript/reference/global_objects/object/keys/index.html
@@ -0,0 +1,171 @@
+---
+title: Object.keys()
+slug: Web/JavaScript/Reference/Global_Objects/Object/keys
+tags:
+ - ECMAScript5
+ - JavaScript
+ - Method
+ - Object
+ - Об'єкт
+ - метод
+translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys
+---
+<div>{{JSRef}}</div>
+
+<p>Метод <code><strong>Object.keys()</strong></code> повертає масив <strong>імен</strong> особистих перелічуваних властивостей переданого об'єкта в тому самому порядку, що його повертає звичайний цикл.</p>
+
+<p>{{EmbedInteractiveExample("pages/js/object-keys.html")}}</p>
+
+<div class="hidden">
+<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p>
+</div>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="syntaxbox"><code>Object.keys(<var>obj</var>)</code></pre>
+
+<h3 id="Параметри">Параметри</h3>
+
+<dl>
+ <dt><code>obj</code></dt>
+ <dd>Об'єкт, перелік властивостей якого треба отримати.</dd>
+</dl>
+
+<h3 id="Вертає">Вертає</h3>
+
+<p>Масив рядків, що передають імена всіх перелічуваних властивостей переданого об'єкта.</p>
+
+<h2 id="Опис">Опис</h2>
+
+<p><code>Object.keys()</code> повертає масив рядків, що передають імена перелічуваних властивостей, які належать безпосередньо об'єктові <code>obj</code>. Порядок отриманих властивостей збігається із тим, що його забезпечує перебір властивостей вручну за допомогою циклу.</p>
+
+<h2 id="Приклади">Приклади</h2>
+
+<pre class="brush: js">// простий масив
+var arr = ['а', 'б', 'в'];
+console.log(Object.keys(arr)); // виводить ['0', '1', '2']
+
+// масив як об'єкт
+var obj = { 0: 'а', 1: 'б', 2: 'в' };
+console.log(Object.keys(obj)); // виводить ['0', '1', '2']
+
+// масив як об'єкт з випадковим порядком ключів
+var anObj = { 100: 'а', 2: 'б', 7: 'в' };
+console.log(Object.keys(anObj)); // виводить ['2', '7', '100']
+
+// getFoo є неперелічуваною властивістю
+var myObj = Object.create({}, {
+ getFoo: {
+ value: function () { return this.foo; }
+ }
+});
+myObj.foo = 1;
+console.log(Object.keys(myObj)); // виводить ['foo']</pre>
+
+<p>Якщо вам потрібні усі властивості, навіть неперелічувані, зверніть увагу на <code>{{jsxref("Object.getOwnPropertyNames()")}}</code>.</p>
+
+<h2 id="Зауваги">Зауваги</h2>
+
+<p>У ES5 метод викидає {{jsxref("Global_Objects/TypeError", "TypeError")}}, якщо арґумент не є об'єктом (а натомість є {{glossary("Primitive", "простою величиною")}}). Водночас у ES2015 арґумент, що належить до простого типу даних, буде перетворено на об'єкт.</p>
+
+<pre class="brush: js">Object.keys('foo');
+// TypeError: "foo" is not an object (код ES5)
+
+Object.keys('foo');
+// ["0", "1", "2"] (код ES2015)
+</pre>
+
+<h2 id="Запасний_варіант_поліфіл">Запасний варіант (поліфіл)</h2>
+
+<p>Для старіших середовищ, де метод <code>Object.keys()</code> відсутній, можна забезпечити запасний варіант, скориставшись таким кодом:</p>
+
+<pre class="brush: js">// З https://developer.mozilla.org/uk/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
+if (!Object.keys) {
+ Object.keys = (function() {
+ 'use strict';
+ var hasOwnProperty = Object.prototype.hasOwnProperty,
+ hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
+ dontEnums = [
+ 'toString',
+ 'toLocaleString',
+ 'valueOf',
+ 'hasOwnProperty',
+ 'isPrototypeOf',
+ 'propertyIsEnumerable',
+ 'constructor'
+ ],
+ dontEnumsLength = dontEnums.length;
+
+ return function(obj) {
+ if (typeof obj !== 'function' &amp;&amp; (typeof obj !== 'object' || obj === null)) {
+ throw new TypeError('Object.keys called on non-object');
+ }
+
+ var result = [], prop, i;
+
+ for (prop in obj) {
+ if (hasOwnProperty.call(obj, prop)) {
+ result.push(prop);
+ }
+ }
+
+ if (hasDontEnumBug) {
+ for (i = 0; i &lt; dontEnumsLength; i++) {
+ if (hasOwnProperty.call(obj, dontEnums[i])) {
+ result.push(dontEnums[i]);
+ }
+ }
+ }
+ return result;
+ };
+ }());
+}
+</pre>
+
+<p>Зауважте, що наведений код у IE7 (а також, можливо, у IE8) повертає також неперелічувані властивості для об'єктів, що їх отримано з іншого вікна.</p>
+
+<p>Простий запасний варіант для переглядача можна знайти в статті <a href="http://tokenposts.blogspot.com.au/2012/04/javascript-objectkeys-browser.html">Javascript - Object.keys Browser Compatibility</a>.</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('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}</td>
+ <td>{{Spec2('ES5.1')}}</td>
+ <td>Первинне визначення. Реалізовано у JavaScript 1.8.5.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES6', '#sec-object.keys', 'Object.keys')}}</td>
+ <td>{{Spec2('ES6')}}</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-object.keys', 'Object.keys')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Підтримка_веб-переглядачами">Підтримка веб-переглядачами</h2>
+
+<div class="hidden">Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
+
+<p>{{Compat("javascript.builtins.Object.keys")}}</p>
+
+<h2 id="Див._також">Див. також</h2>
+
+<ul>
+ <li><a href="/uk/docs/Web/JavaScript/Перелічуваність_та_належність_властивостей">Перелічуваність та належність властивостей</a></li>
+ <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li>
+ <li>{{jsxref("Object.create()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertyNames()")}}</li>
+ <li>{{jsxref("Object.values()")}}</li>
+ <li>{{jsxref("Object.entries()")}}</li>
+</ul>