Оператор in
повертає true
, якщо вказана властивість присутня у вказаному об'єкті або у його ланцюжку прототипів.
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 https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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 (ECMA-262) The definition of 'Relational Operators' in that specification. |
Living Standard | |
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. |
Сумісність з веб-переглядачами
BCD tables only load in the browser