Как получить доступ к свойству объекта javaScript ИМЯ, а не ЗНАЧЕНИЕ

У меня есть объект
me = { name: "Mo", age: 28, } И я хочу посмотреть, если этот объект имеет свойство "высота", например. (чего нет) Как я могу это сделать? Так, например, если у него есть свойство "высота", я могу дать ему значение "5,7".

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Я не хочу проверять для свойства VALUE(me.name), но для свойства NAME.

Спасибо.

4 ответа

Решение

Вы можете использовать in оператор:

if ("height" in me) {
  // object has a property named "height"
}
else {
  // no property named "height"
}

Обратите внимание, что если у объекта нет свойства с именем height, вы все равно можете добавить такое свойство:

me.height = 100;

Это работает независимо от того, имел ли объект ранее свойство "height".

Там также .hasOwnProperty Метод, унаследованный от прототипа Object:

if (me.hasOwnProperty("height"))

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

Ты можешь использовать

if (me.hasOwnProperty('height'))
{
 }
else
{
 }

Ты можешь использовать .hasOwnProperty

me.hasOwnProperty('height'); //false

Прямой ответ:

if (Object.keys(me).indexOf("name") >= 0) {
    //do the stuff
}

НО, что вы должны сделать, это создать договорный объект / класс / модуль, ожидая, что у меня будет height имущество. Если это не так, вы должны выбросить исключение. Худшие вещи в программировании - это наполовину ожидания. Это не только нарушает правила SOLID, но также приводит к подобным сценариям, где единственным решением являются повторяющиеся операторы if/switch, чтобы гарантировать обработку всех возможностей...

Другие вопросы по тегам