Оператор in

Оператор in повертає true, якщо вказана властивість присутня у вказаному об'єкті або у його ланцюжку прототипів.

Синтаксис

prop in objectName

Параметри

prop
Рядок або символ, що є іменем властивості або індексом масиву (не символи будуть приведені до рядка).
objectName
Об'єкт, у якому виконується перевірка того, чи він (або його ланцюжок прототипів) містить властивість з вказаним ім'ям.

Опис

Наступний приклад ілюструє деякі випадки використання оператора in.

// Масиви
var trees = ['секвоя', 'лавр', 'кедр', 'дуб', 'клен'];
0 in trees        // вертає true
3 in trees        // вертає true
6 in trees        // вертає false
'лавр' in trees    // вертає false (ви повинні вказати 
                  // індекс, а не значення за цим індексом)
'length' in trees // вертає true (length є властивістю об'єкта Array)
Symbol.iterator in trees // вертає true (масиви ітерабельні, працює лише у ES2015+)

// Попередньо визначені об'єкти
'PI' in Math          // вертає true

// Користувацькі об'єкти
var mycar = {make: 'Honda', model: 'Accord', year: 1998};
'make' in mycar  // вертає true
'model' in mycar // вертає true

Необхідно вказати об'єкт справа від оператора in. Наприклад, можна вказати рядок, створений за допомогою конструктора String, але не можна вказувати рядковий літерал.

var color1 = new String('зелений');
'length' in color1 // вертає true

var color2 = 'кораловий';
// генерує помилку (color2 не є об'єктом String)
'length' in color2

Використання in з властивостями, що видалені або дорівнюють undefined

Якщо видалити властивість оператором delete, оператор in  поверне false для цієї властивості.

var mycar = {make: 'Honda', model: 'Accord', year: 1998};
delete mycar.make;
'make' in mycar;  // вертає false

var trees = new Array('секвоя', 'лавр', 'кедр', 'дуб', 'клен');
delete trees[3];
3 in trees; // вертає false

Якщо задати властивості значення undefined, але не видалити її, оператор in поверне true для цієї властивості.

var mycar = {make: 'Honda', model: 'Accord', year: 1998};
mycar.make = undefined;
'make' in mycar;  // вертає true
var trees = new Array('секвоя', 'лавр', 'кедр', 'дуб', 'клен');
trees[3] = undefined;
3 in trees; // вертає true

Успадковані властивості

Оператор in повертає true для властивостей з ланцюжка прототипів. (Якщо вам потрібно перевірити лише не успадковані властивості, скористайтесь методом Object.prototype.hasOwnProperty().)

'toString' in {}; // вертає true

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

Специфікація Статус Коментар
ECMAScript Latest Draft (ECMA-262)
The definition of 'Relational Operators' in that specification.
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Relational Operators' in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
The definition of 'The in Operator' in that specification.
Standard
ECMAScript 3rd Edition (ECMA-262)
The definition of 'The in Operator' in that specification.
Standard Початкове визначення. Реалізоване у JavaScript 1.4.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
inChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support YesSafari Full support YesWebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support

Також дивіться