From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../object/propertyisenumerable/index.html | 173 +++++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html (limited to 'files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html') diff --git a/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html new file mode 100644 index 0000000000..018edd3ca3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html @@ -0,0 +1,173 @@ +--- +title: Object.prototype.propertyIsEnumerable() +slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +--- +
{{JSRef("Global_Objects", "Object")}}
+ +

Сводка

+

Метод propertyIsEnumerable() возвращает логическое значение, указывающее, является ли указанное свойство перечисляемым.

+ +

Синтаксис

+
obj.propertyIsEnumerable(prop)
+ +

Параметры

+
+
prop
+
Имя проверяемого свойства.
+
+ +

Описание

+

Каждый объект имеет метод propertyIsEnumerable. Этот метод может определять, является ли указанное свойство в объекте перечисляемым в цикле {{jsxref("Statements/for...in", "for...in")}}, за исключением свойств, унаследованных из цепочки прототипов. Если объект не имеет указанного свойства, метод вернёт false.

+ +

Примеры

+ +

Пример: базовое использование propertyIsEnumerable

+

Следующий пример показывает использование метода propertyIsEnumerable на объектах и массивах:

+
var o = {};
+var a = [];
+o.prop = 'перечисляемое';
+a[0] = 'перечисляемое';
+
+o.propertyIsEnumerable('prop');   // вернёт true
+a.propertyIsEnumerable(0);        // вернёт true
+
+ +

Пример: определённые пользователем и встроенные объекты

+

Следующий пример демонстрирует перечисляемость свойств, определённых пользователем и встроенных свойств:

+
var a = ['перечисляемое'];
+
+a.propertyIsEnumerable(0);          // вернёт true
+a.propertyIsEnumerable('length');   // вернёт false
+
+Math.propertyIsEnumerable('random');   // вернёт false
+this.propertyIsEnumerable('Math');     // вернёт false
+
+ +

Пример: собственные и унаследованные свойства

+
var a = [];
+a.propertyIsEnumerable('constructor');         // вернёт false
+
+function firstConstructor() {
+  this.property = 'не перечисляемое';
+}
+
+firstConstructor.prototype.firstMethod = function() {};
+
+function secondConstructor() {
+  this.method = function method() { return 'перечисляемый'; };
+}
+
+secondConstructor.prototype = new firstConstructor;
+secondConstructor.prototype.constructor = secondConstructor;
+
+var o = new secondConstructor();
+o.arbitraryProperty = 'перечисляемое';
+
+o.propertyIsEnumerable('arbitraryProperty');   // вернёт true
+o.propertyIsEnumerable('method');              // вернёт true
+o.propertyIsEnumerable('property');            // вернёт false
+
+o.property = 'перечисляемое';
+
+o.propertyIsEnumerable('property');            // вернёт true
+
+// Эти вызовы вернут false, поскольку все свойства находятся в прототипе,
+// который метод propertyIsEnumerable не просматривает (даже несмотря на то,
+// что последние два свойства перечисляются через цикл for...in)
+o.propertyIsEnumerable('prototype');   // вернёт false (в JS 1.8.1/FF3.6)
+o.propertyIsEnumerable('constructor'); // вернёт false
+o.propertyIsEnumerable('firstMethod'); // вернёт false
+
+ +

Спецификации

+ + + + + + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
ECMAScript 3-е издание.СтандартИзначальное определение.
{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}{{Spec2('ES6')}} 
+ +

Совместимость с браузерами

+
{{CompatibilityTable}}
+
+ + + + + + + + + + + + + + + + + + + +
ВозможностьChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+
+ + + + + + + + + + + + + + + + + + + + + +
ВозможностьAndroidChrome для AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая поддержка{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}
+
+ +

Особый случай с Gecko

+

Начиная с JavaScript 1.8.1 (в Firefox 3.6), метод propertyIsEnumerable('prototype') возвращает false вместо true; это делает результат совместимым с ECMAScript 5.

+ +

Смотрите также

+ -- cgit v1.2.3-54-g00ecf