Как я могу определить, x
имеет ли объект определенное свойство y
, независимо от значения x.y
?
Я сейчас пользуюсь
if (typeof(x.y) !== 'undefined')
но это кажется немного неуклюжим. Есть ли способ лучше?
javascript
object
royhowie
источник
источник
Object.prototype.hasOwnProperty.call(x, 'y')
чтобы свойство с именем hasOwnProperty не конфликтовало с процессом проверки;){}.hasOwnProperty.call(x, 'y')
.Если вы хотите знать, содержит ли объект физически ответ свойства @ gnarf, то с помощью этой операции он справится
hasOwnProperty
.Если вы хотите узнать, существует ли свойство где-либо, либо на самом объекте, либо в цепочке прототипов, вы можете использовать
in
оператор .Например.:
источник
Underscore.js или Lodash
:)
источник
Object.prototype.hasOwnProperty.call(x, "y")
. Для массивов я думаю , что вы , возможно , захотитеArray.prototype.indexOf
,_.indexOf
или_.contains
Вы можете уточнить это немного так:
источник
x = {y:undefined}
Одна особенность моего оригинального кода
это может быть полезно в некоторых ситуациях, так как это безопасно использовать,
x
существует или нет. Используя любой из методов ответа gnarf, нужно сначала проверить,x
есть ли сомнения в его существовании.Так что, возможно, все три метода имеют место в сумке с трюками.
источник
(x && x.hasOwnProperty('y'))
или(x && 'y' in x)
ReferenceError
вместо строки «undefined»Так как вопрос касался грубости проверки свойств и одного регулярного варианта использования для проверки объектов опций аргумента функции, я подумал, что я бы упомянул о свободном от библиотеки коротком способе проверки существования нескольких свойств. Отказ от ответственности: для этого требуется ECMAScript 5 (но IMO любой, кто все еще использует IE8, заслуживает сломанной сети).
источник
Почему бы просто:
Или, если вы ожидаете определенного типа:
источник
x.hasOwnProperty('y')
?