hasOwnProperty
는 JavaScript의 내장 메서드로, 객체가 특정 속성을 직접 소유하고 있는지 확인하는 기능을 제공합니다. 이 메서드는 상속받은 속성이나 프로토타입 체인을 통해 상속받은 속성은 확인하지 않고, 오직 객체 자체에 직접 정의된 속성만을 확인합니다.
hasOwnProperty
메서드는 다음과 같은 구문으로 사용됩니다:
object.hasOwnProperty(property)
여기서 object
는 확인하고자 하는 속성을 가진 객체이고, property
는 확인하고자 하는 속성의 이름(문자열)입니다.
hasOwnProperty
메서드의 동작은 다음과 같습니다:
object
객체가 property
이름의 속성을 직접 소유하고 있는지 확인합니다.object
객체가 property
이름의 속성을 직접 소유하고 있다면, hasOwnProperty
는 true
를 반환합니다.object
객체가 property
이름의 속성을 직접 소유하고 있지 않거나 object
가 null
또는 undefined
인 경우, hasOwnProperty
는 false
를 반환합니다.다음은 hasOwnProperty
메서드의 예시입니다:
const person = {
name: 'John',
age: 25,
};
console.log(person.hasOwnProperty('name')); // true
console.log(person.hasOwnProperty('age')); // true
console.log(person.hasOwnProperty('gender')); // false
console.log(person.hasOwnProperty('toString')); // false (상속받은 메서드)
console.log(person.hasOwnProperty('hasOwnProperty')); // false (상속받은 메서드)
const emptyObject = {};
console.log(emptyObject.hasOwnProperty('property')); // false
위의 예시에서 person
객체는 name
과 age
라는 속성을 직접 소유하고 있기 때문에 hasOwnProperty
는 해당 속성에 대해 true
를 반환합니다. 그러나 gender
속성은 person
객체에 직접 정의되지 않았기 때문에 false
를 반환합니다. 또한, toString
과 hasOwnProperty
는 Object
객체를 상속받은 속성이므로 false
를 반환합니다.
빈 객체인 emptyObject
의 경우에는 어떤 속성도 직접 소유하고 있지 않기 때문에 hasOwnProperty
는 항상 false
를 반환합니다.
hasOwnProperty
메서드는 객체의 속성을 검사할 때 유용하며, 프로퍼티가 있는지 여부를 확인하여 안전하게 작업할 수 있도록 도와줍니다.