--- title: in operator slug: Web/JavaScript/Reference/Operators/in tags: - JavaScript - Оператор - Оператор отношения translation_of: Web/JavaScript/Reference/Operators/in ---
Оператор in
возвращает true
, если свойство содержится в указанном объекте или в его цепочке прототипов.
prop in object
prop
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
Если вы зададите свойству значение {{jsxref("Global_Objects/undefined", "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
для свойств, которые унаследованы по цепочке прототипов. (Если вы хотите проверить только не наследованные свойства, используйте {{jsxref("Object.prototype.hasOwnProperty()")}}.)
"toString" in {}; // true
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES2015', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ES2015')}} | |
{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES3')}} | Определено изначально. Реализовано в JavaScript 1.4 |
{{Compat("javascript.operators.in")}}
delete