Javascript что такое свойство в hasOwnProperty?
If( somevar.hasOwnProperty('someProperty') ) {
// do something();
} else {
// do sometingelse();
}
Какое правильное использование/объяснение hasOwnProperty('someProperty')
?
Почему мы не можем просто использовать somevar.someProperty
для проверки того, содержит ли объект somevar
свойство с именем someProperty
?
Что такое свойство в этом случае?
Какое свойство выполняет эта проверка javascript?
Ответы
Ответ 1
hasOwnProperty
возвращает логическое значение, указывающее, имеет ли объект, к которому вы его вызываете, свойство с именем аргумента. Например:
var x = {
y: 10
};
console.log(x.hasOwnProperty("y")); //true
console.log(x.hasOwnProperty("z")); //false
Однако он не смотрит на цепочку прототипов объекта.
Полезно использовать его, когда перечисляете свойства объекта с конструкцией for...in
.
Если вы хотите увидеть полную информацию, спецификация ES5, как всегда, хорошее место для просмотра.
Ответ 2
он проверяет:
Возвращает логическое значение, указывающее, имеет ли объект свойство с указанным именем
Метод hasOwnProperty возвращает значение true, если объект имеет свойство указанного имени, а false - если это не так. Этот метод не проверяет, существует ли свойство в цепочке прототипов объекта; свойство должно быть членом самого объекта.
Пример:
var s = new String("Sample");
document.write(s.hasOwnProperty("split")); //false
document.write(String.prototype.hasOwnProperty("split")); //true
Ответ 3
Вот короткий и точный ответ:
В javascript каждый объект имеет кучу встроенных пар ключ-значение, которые имеют метаинформацию об объекте. Когда вы зацикливаете все пары ключ-значение с помощью for...in
construct/loop для объекта, который вы также прокручиваете через эти мета-информационные пары ключ-значение (что вам определенно не нужно).
![введите описание изображения здесь]()
Используя hasOwnPropery(property)
filter-out, этот ненужный цикл через метаинформацию и непосредственно проверяет, является ли параметр property
заданным пользователем объектом в объекте.
Под фильтрами я имею в виду, что hasOwnProperty(property)
не выглядит, существует ли property
в цепочке прототипов объекта, а также метаинформации.
Он возвращает boolean true/false
на основе этого.
Вот пример:
var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"};
console.log(fruitObject.hasOwnProperty("name")); //true
console.log(Object.prototype.hasOwnProperty("toString");) //true because in above snapshot you can see, that there is a function toString in meta-information
Ответ 4
hasOwnProperty - это нормальная функция Javascript, которая принимает строковый аргумент.
В вашем случае somevar.hasOwnProperty('someProperty') он проверяет, что функция somevar имеет somepropery или нет, она возвращает true и false
Скажите
function somevar() {
this.someProperty= "Generic";
}
function welcomeMessage()
{
var somevar1= new somevar();
if(somevar1.hasOwnProperty("name"))
{
alert(somevar1.hasOwnProperty("name"));// it will return true
}
}
Ответ 5
Вы используете object.hasOwnProperty(p), чтобы определить, имеет ли объект свойство перечисляемое p -
объект может иметь свой собственный прототип, где методы и атрибуты по умолчанию назначаются каждому экземпляру объекта. hasOwnProperty возвращает true только для свойств, которые были специально установлены в конструкторе или добавлены в экземпляр позже.
чтобы определить, определено ли p вообще, где угодно, для объекта, используйте if ( p экземпляр объекта), где p оценивает строку имени свойства.
Например, по умолчанию все объекты имеют метод 'toString', но он не будет отображаться в hasOwnProperty.
Ответ 6
проверяет, обладает ли объект свойством. Насколько мне известно, он работает так же, как if(obj.prop)
.
Ответ 7
Я также написал этот простой объект-hasOwnProperty повторно используемый компонент, возвращающий логическое значение для проверки того, имеет ли объект указанное свойство. Он имеет 2 примера и 3 теста, которые могут помочь лучше понять поведение реального использования.
Примеры:
hasOwnProperty({foo: 'bar'}, 'foo') // => true
hasOwnProperty({foo: 'bar'}, 'bar') // => false
Проверенные варианты использования:
hasOwnProperty() should return false as given object do not contain key `bar`
hasOwnProperty() should return true as given object contains key `foo`
hasOwnProperty() should return false if key is null
Вот как это работает:
function hasOwnProperty(obj: {}, prop: string|number): boolean {
return Object.prototype.hasOwnProperty.call(obj, prop);
};