diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/object/getownpropertynames/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/object/getownpropertynames/index.html | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/uk/web/javascript/reference/global_objects/object/getownpropertynames/index.html deleted file mode 100644 index df8c13a161..0000000000 --- a/files/uk/web/javascript/reference/global_objects/object/getownpropertynames/index.html +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Object.getOwnPropertyNames() -slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames -tags: - - ECMAScript5 - - JavaScript - - Об'єкт - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames ---- -<div>{{JSRef}}</div> - -<p>Метод <strong><code>Object.getOwnPropertyNames()</code></strong> повертає масив усіх властивостей (в тому числі неперелічуваних, за винятком властивостей, що використовують символ), знайдених безпосередньо на наданому об'єкті.</p> - -<div>{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}</div> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="brush: js">Object.getOwnPropertyNames(<var>obj</var>)</pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code><var>obj</var></code></dt> - <dd>Об'єкт, чиї перелічувані та неперелічувані властивості будуть повернені.</dd> -</dl> - -<h3 id="Значення_що_повертається">Значення, що повертається</h3> - -<p>Масив рядків, що відповідає властивостям, знайденим безпосередньо у наданому об'єкті.</p> - -<h2 id="Опис">Опис</h2> - -<p><code>Object.getOwnPropertyNames()</code> повертає масив, чиї елементи є рядками, що відповідають перелічуваним та неперелічуваним властивостям, знайденим безпосередньо на наданому об'єкті <code><var>obj</var></code>. Порядок перелічуваних властивостей у масиві відповідає порядку, в якому видає властивості об'єкта цикл {{jsxref("Statements/for...in", "for...in")}} (або метод {{jsxref("Object.keys()")}}). Порядок неперелічуваних властивостей у масиві, а також порядок посеред перелічуваних властивостей, не визначені.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Використання_Object.getOwnPropertyNames">Використання <code>Object.getOwnPropertyNames()</code></h3> - -<pre class="brush: js">var arr = ['а', 'б', 'в']; -console.log(Object.getOwnPropertyNames(arr).sort()); -// виведе ["0", "1", "2", "length"] - -// подібний до масиву об'єкт -var obj = { 0: 'а', 1: 'б', 2: 'в' }; -console.log(Object.getOwnPropertyNames(obj).sort()); -// виведе ["0", "1", "2"] - -// Виведення імен та значень властивостей через Array.forEach -Object.getOwnPropertyNames(obj).forEach( - function (val, idx, array) { - console.log(val + ' -> ' + obj[val]); - } -); -// виведе -// 0 -> а -// 1 -> б -// 2 -> в - -// неперелічувана властивість -var my_obj = Object.create({}, { - getFoo: { - value: function() { return this.foo; }, - enumerable: false - } -}); -my_obj.foo = 1; - -console.log(Object.getOwnPropertyNames(my_obj).sort()); -// виведе ["foo", "getFoo"] -</pre> - -<p>Якщо вам потрібні тільки перелічувані властивості, дивіться {{jsxref("Object.keys()")}} або скористайтесь циклом {{jsxref("Statements/for...in", "for...in")}} (зауважте, що це також поверне перелічувані властивості, знайдені у ланцюжку прототипів об'єкта, якщо тільки вони не були відфільтровані методом {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).</p> - -<p>Елементи, знайдені у ланцюжку прототипів, не додаються у список:</p> - -<pre class="brush: js">function ParentClass() {} -ParentClass.prototype.inheritedMethod = function() {}; - -function ChildClass() { - this.prop = 5; - this.method = function() {}; -} -ChildClass.prototype = new ParentClass; -ChildClass.prototype.prototypeMethod = function() {}; - -console.log( - Object.getOwnPropertyNames( - new ChildClass() // ["prop", "method"] - ) -); -</pre> - -<h3 id="Отримати_лише_неперелічувані_властивості">Отримати лише неперелічувані властивості</h3> - -<p>Тут використовується функція {{jsxref("Array.prototype.filter()")}} для видалення перелічуваних ключів (отриманих методом {{jsxref("Object.keys()")}}) зі списка усіх ключів (отриманих методом <code>Object.getOwnPropertyNames()</code>), таким чином, повертаючи тільки неперелічувані ключі.</p> - -<pre class="brush: js">var target = myObject; -var enum_and_nonenum = Object.getOwnPropertyNames(target); -var enum_only = Object.keys(target); -var nonenum_only = enum_and_nonenum.filter(function(key) { - var indexInEnum = enum_only.indexOf(key); - if (indexInEnum == -1) { - // Ключ не знайдений у ключах enum_only, - // це означає, що він є неперелічуваним, - // тому повертаємо true, щоб залишити його у фільтрі - return true; - } else { - return false; - } -}); - -console.log(nonenum_only); -</pre> - -<h2 id="Примітки">Примітки</h2> - -<p>У ES5, якщо аргумент цього методу не є об'єктом (примітив), це спричинить помилку {{jsxref("TypeError")}}. У ES2015 аргумент, що не є об'єктом, буде приведений до об'єкта.</p> - -<pre class="brush: js">Object.getOwnPropertyNames('foo'); -// TypeError: "foo" is not an object (код ES5) - -Object.getOwnPropertyNames('foo'); -// ["0", "1", "2", "length"] (код ES2015) -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">Специфікація</th> - <th scope="col">Статус</th> - <th scope="col">Коментар</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('ESDraft', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td>Початкове визначення. Реалізоване у JavaScript 1.8.5.</td> - </tr> - </tbody> -</table> - -<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2> - - - -<p>{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}</p> - -<h2 id="Примітки_щодо_Firefox">Примітки щодо Firefox</h2> - -<p>До Firefox 28 метод <code>Object.getOwnPropertyNames</code> не бачив невирішених властивостей об'єктів {{jsxref("Error")}}. Це було виправлено у пізніших версіях ({{bug("724768")}}).</p> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li><a href="/uk/docs/Web/JavaScript/Перелічуваність_та_належність_властивостей">Перелічуваність та належність властивостей</a></li> - <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li> - <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li> - <li>{{jsxref("Object.create()")}}</li> - <li>{{jsxref("Object.keys()")}}</li> - <li>{{jsxref("Array.forEach()")}}</li> -</ul> |