개요
hasOwnProperty() 메서드는 객체에 지정된 고유 속성이 포함되어 있는지 확인하는 데 사용됩니다.
문법
obj.hasOwnProperty(prop)
매개변수
•소품
•탐지할 속성의 이름입니다.
설명
Object.prototype을 상속하는 모든 개체는 프로토타입 체인에서 hasOwnProperty 메서드를 상속합니다. 이 메서드는 개체에 특정 고유 속성이 포함되어 있는지 여부를 감지하는 데 사용할 수 있습니다. 이 메서드는 프로토타입 속성의 속성을 무시합니다. 체인에서 상속됩니다.
예
예 1: hasOwnProperty 메소드를 사용하여 객체에 특정 고유 속성이 포함되어 있는지 확인
다음 예에서는 객체 o에 자체 속성 prop이 포함되어 있는지 확인합니다.
o = new Object();o.prop = '존재';functionchangeO() {
o.newprop = o.prop;
o.prop;}o.hasOwnProperty('prop') 삭제
// true를 반환합니다
ChangeO();
o.hasOwnProperty('prop')
// false를 반환합니다
예시 2: 자기 속성과 상속 속성의 차이
다음 예에서는 hasOwnProperty 메소드가 자체 속성과 상속된 속성을 처리하는 방식의 차이점을 보여줍니다.
o = new Object();o.prop = '존재';o.hasOwnProperty('prop');
// true를 반환합니다
o.hasOwnProperty('toString');
// false를 반환합니다
o.hasOwnProperty('hasOwnProperty')
// false를 반환합니다
예 3: 객체의 모든 자체 속성 순회
다음 예에서는 객체의 모든 속성을 탐색할 때 상속된 속성을 무시하는 방법을 보여줍니다. 여기서 for..in 루프는 열거 가능한 속성만 탐색합니다. 이는 일반적으로 우리가 원하는 것입니다. 방법도 비슷한 요구를 충족할 수 있습니다.
var buz = {
안개: '스택'};
for (buz의 var 이름) {
If (buz.hasOwnProperty(이름)) {
Alert("확실히 안개(" name ")입니다. 값: " buz[name]);
}
그렇지 않으면 {
경고(이름);
// toString 또는 다른 것
}}
예 4: hasOwnProperty 메소드가 모호할 수 있음
객체에 자체 hasOwnProperty 메소드가 있는 경우 프로토타입 체인에서 동일한 이름을 가진 메소드가 숨겨집니다.
var foo = {
HasOwnProperty: 함수() {
false를 반환합니다.
},
bar: '여기에 용들이 있습니다'};foo.hasOwnProperty('bar')
// 항상 false를 반환합니다
// 이런 상황이 걱정된다면 프로토타입 체인에서 실제 hasOwnProperty 메소드를 직접 사용하면 됩니다
({}).hasOwnProperty.call(foo, 'bar')
//참
Object.prototype.hasOwnProperty.call(foo, 'bar')
//참
위 내용은 이 글에 설명된 내용 전부입니다. 모두 마음에 드셨으면 좋겠습니다.