in operator

Оператор in возвращает true, если свойство содержится в указанном объекте или в его цепочке прототипов.

Синтаксис

prop in object

Параметры

prop
Строка или symbol, представляющий название свойства или индекс массива (non-symbols будут конвертированы в строки).
object
Объект, в котором нужно проверить содежание свойства с заданным именем.

Описание

В примере ниже показаны некоторые способы использования оператора in.

// Массивы
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees        // true
3 in trees        // true
6 in trees        // false
"bay" in trees    // false (вы должны указать индекс элемента в массиве, а не значение в этом индексе)
"length" in trees // true (length является свойством Array)

// Уже существующие объекты
"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("green");
"length" in color1 // returns true

var color2 = "coral";
// сгенерирует ошибку (color2 is not a String object)
"length" in color2

Использование оператора in с неопределенными или с уже удаленными свойствами

Если вы удалили свойство при помощи оператора delete, то оператор in возвратит false для этого свойства.

var mycar = {make: "Honda", model: "Accord", year: 1998};
delete mycar.make;
"make" in mycar;  // false

var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
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("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
3 in trees; // returns true

Наследуемые свойства

Оператор in возвратит true для свойств, которые унаследованы по цепочке прототипов. (Если вы хотите проверить только не наследованные свойства, используйте Object.prototype.hasOwnProperty().)

"toString" in {}; // true

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

Спецификация Статус Комментарий
ECMAScript Latest Draft (ECMA-262)
Определение 'Relational Operators' в этой спецификации.
Черновик
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Relational Operators' в этой спецификации.
Стандарт
ECMAScript 5.1 (ECMA-262)
Определение 'The in Operator' в этой спецификации.
Стандарт
ECMAScript 3rd Edition (ECMA-262)
Определение 'The in Operator' в этой спецификации.
Стандарт Определено изначально. Реализовано в JavaScript 1.4

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

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
inChrome Полная поддержка ДаEdge Полная поддержка ДаFirefox Полная поддержка 1IE Полная поддержка ДаOpera Полная поддержка ДаSafari Полная поддержка ДаWebView Android Полная поддержка ДаChrome Android Полная поддержка ДаFirefox Android Полная поддержка 4Opera Android Полная поддержка ДаSafari iOS Полная поддержка ДаSamsung Internet Android Полная поддержка Даnodejs Полная поддержка Да

Легенда

Полная поддержка  
Полная поддержка

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