operator in - garevna/js-course GitHub Wiki
:mortar_board: Оператор in
Первым операндом оператора in является имя свойства ( строка )
Второй операнд - объект, проверяемый на наличие такого свойства
Оператор in возвращает логическое значение
trueесли такое свойство есть у объектаfalseесли такого свойства нет
Наличие указанного первым операндом свойства проверяется по всей цепочке прототипов
let sample = {
type: "figure",
class: "circle",
color: "red"
}
console.log ( "type" in sample ) // true
console.log ( "valueOf" in sample ) // true
В данном примере метод valueOf является унаследованным, однако оператор in возвращает true
Массивы
var arr = [ 1, 2, 3 ]
"valueOf" in arr // true
"valueOf" in [ 1, 2, 3 ] // true
0 in [ 1, 2, 3 ] // true
5 in [ 1, 2, 3 ] // false
Строки, числа и логические значения
Их нужно "завернуть" в объект так:
var sample = String ( "Welcome to the hell" )
"length" in sample // true
var number = new Number ( 5 )
"valueOf" in number // true
var bool = new Boolean ( "5" )
"valueOf" in bool // true
или так:
var sample = Object ( "Welcome to the hell" )
"length" in sample // true
var number = Object ( 5 )
"valueOf" in number // true
var bool = Object ( false )
"valueOf" in bool // true
Если не "завернуть" строку, число или логическое значение в объект, то при попытке использовать оператор in будет сгенерировано исключение TypeError
var sample = "Welcome to the hell"
"length" in sample // TypeError
var number = 5
"valueOf" in number // TypeError
var bool = true
"valueOf" in bool // TypeError
null | undefined
"Завернуть" в объект можно также null и undefined
var sample = Object ( null )
"valueOf" in sample // true
var sample = Object ( undefined )
"valueOf" in sample // true