[javascript] JavaScript에서 hasOwnProperty의 속성은 무엇입니까?

중히 여기다:

if (someVar.hasOwnProperty('someProperty') ) {
 // Do something();
} else {
 // Do somethingElse();
}

의 올바른 사용 / 설명은 hasOwnProperty('someProperty')무엇입니까?

someVar.someProperty객체 someVar에 이름이있는 속성이 있는지 확인하는 데 사용할 수없는 이유는 무엇 someProperty입니까?

이 경우 속성은 무엇입니까?

이 JavaScript는 어떤 속성을 확인합니까?



답변

hasOwnProperty호출하는 객체에 인수 이름이있는 속성이 있는지 여부를 나타내는 부울 값을 반환합니다. 예를 들면 :

var x = {
    y: 10
};
console.log(x.hasOwnProperty("y")); //true
console.log(x.hasOwnProperty("z")); //false

그러나 객체의 프로토 타입 체인은 보지 않습니다.

for...in구문 을 사용하여 개체의 속성을 열거 할 때 사용하는 것이 유용합니다 .

전체 세부 사항을보고 싶다면 ES5 사양 이 항상 그렇듯이보기에 좋은 곳입니다.


답변

짧고 정확한 대답은 다음과 같습니다.

JavaScript에서 모든 객체에는 객체에 대한 메타 정보가있는 내장 키-값 쌍이 있습니다. for...in객체에 대한 구성 / 루프를 사용하여 모든 키-값 쌍을 반복하면이 메타 정보 키-값 쌍도 반복됩니다 (확실히 원하지 않음).

여기에 이미지 설명 입력

사용 hasOwnPropery(property) 필터 아웃 메타 정보 및 파라미터를 직접 검사를 통해 이러한 불필요한 루프 것은 property객체의 여부에 사용자가 소정의 성질이다. 에 의해 필터 아웃 , 그 말은 hasOwnProperty(property), 경우에 보이지 않는 property일명 객체의 프로토 타입 체인 메타 정보에 존재합니다.

이를 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

분명했으면 좋겠어!


답변

다음을 확인합니다.

객체에 지정된 이름의 속성이 있는지 여부를 나타내는 부울 값을 반환합니다.

hasOwnProperty의 개체가 그렇지 않은 경우는 false 지정된 이름의 속성을 가지고있는 경우 메소드는 true를 반환합니다. 이 메서드는 객체의 프로토 타입 체인에 속성이 있는지 확인하지 않습니다. 속성은 개체 자체의 구성원이어야합니다.

예:

var s = new String("Sample");
document.write(s.hasOwnProperty("split"));                        //false
document.write(String.prototype.hasOwnProperty("split"));         //true


답변

요약:

hasOwnProperty()모든 객체에서 호출 할 수있는 함수이며 문자열을 입력으로받습니다. true속성이 객체에 있으면 부울을 반환하고 그렇지 않으면 false를 반환합니다. hasOwnProperty()위치에 Object.prototype있으므로 모든 개체에 사용할 수 있습니다.

예:

function Person(name) {
  this.name = name;
}

Person.prototype.age = 25;

const willem = new Person('willem');

console.log(willem.name); // Property found on object
console.log(willem.age); // Property found on prototype

console.log(willem.hasOwnProperty('name')); // 'name' is on the object itself
console.log(willem.hasOwnProperty('age')); // 'age' is not on the object itself

이 예제에서는 새로운 Person 객체가 생성됩니다. 각 Person에는 생성자에서 초기화되는 고유 한 이름이 있습니다. 그러나 나이는 개체가 아니라 개체의 프로토 타입에 있습니다. 따라서 이름과 나이를 hasOwnProperty()반환 true합니다 false.

실용적인 적용:

hasOwnProperty()for in루프를 사용하여 객체를 반복 할 때 매우 유용 할 수 있습니다 . 속성이 프로토 타입이 아닌 객체 자체의 속성인지 확인할 수 있습니다. 예를 들면 :

function Person(name, city) {
  this.name = name;
  this.city = city;
}

Person.prototype.age = 25;

const willem = new Person('Willem', 'Groningen');

for (let trait in willem) {
  console.log(trait, willem[trait]); // This loops through all properties, including the prototype
}

console.log('\n');

for (let trait in willem) {
  if (willem.hasOwnProperty(trait)) { // This loops only through 'own' properties of the object
    console.log(trait, willem[trait]);
  }
}


답변

당신은 object.hasOwnProperty (사용 p는 물체가있는 경우)를 결정하는 열거 속성 P를

객체는 자체 프로토 타입을 가질 수 있으며, 여기서 ‘기본’메소드와 속성은 객체의 모든 인스턴스에 할당됩니다. hasOwnProperty는 생성자에서 특별히 설정되었거나 나중에 인스턴스에 추가 된 속성에 대해서만 true를 반환합니다.

p 가 객체에 대해 어디서나 정의 되었는지 확인하려면 if ( p instanceof object)를 사용합니다. 여기서 p는 속성 이름 문자열로 평가됩니다.

예를 들어, 기본적으로 모든 객체에는 ‘toString’메서드가 있지만 hasOwnProperty에 표시되지 않습니다.


답변

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
    }
}


답변

hasOwnProperty객체속성 이 있는지 여부를 확인하는 적절한 방법입니다 . someVar.someProperty이 상황의 대안으로 사용할 수 없습니다. 다음 조건은 좋은 차이를 보여줍니다.

const someVar = { isFirst: false };


// The condition is true, because 'someVar' has property 'isFirst'
if (someVar.hasOwnProperty('isFirst')) {
  // Code runs
}


// The condition is false, because 'isFirst' is false.
if (someVar.isFirst) {
  // Code does not runs here
}

따라서 someVar.isFirst대안을 사용할 수 없습니다 someVar.hasOwnProperty('isFirst').