hasOwnProperty

hasOwnProperty() 메소드는 객체가 특정 프로퍼티를 가지고 있는지를 나타내는 불리언 값을 반환한다.

문법

1
obj.hasOwnProperty(prop)

파라미터

prop: 테스트하려는 프로퍼티의 명칭

설명

모든 객체는 hasOwnProperty를 상속하는 Object의 자식이다. 이 메소드는 객체가 특정 프로퍼티를 자기만의 직접적인
프로퍼티로서 소유하고 있는지를 판단하는데 사용된다. in연산과는 다르게, 이 메소드는 객체의 프로토타입 체인을 확인하지는 않는다.

예제

프로퍼티의 존재 여부를 테스트하기 위한 hasOwnProperty의 사용

다음은 o 객체가 prop라는 명칭을 지닌 프로퍼티를 포함하는지를 판단하는 예제이다.

1
2
3
4
5
6
7
8
9
10
o = new Object();
o.prop = 'exists';

function change0() {
o.newprop = o.prop;
delete o.prop;
}
o.hasOwnProperty('prop'); // returns true
change0();
o.hasOwnProperty('prop'); // returns false

직접 프로퍼티와 상속된 프로퍼티의 비교

다음은 직접 프로퍼티와 프로토타입 체인에서 상속된 프러퍼티 간의 차이점을 비교하는 예제이다.

1
2
3
4
5
o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop'); // returns true
o.hasOwnProperty('toString'); // returns false
o.hasOwnProperty('hasOwnProperty'); // returns false

객체의 프로퍼티들을 순환하기

1
2
3
4
5
6
7
8
9
10
11
12
var buz = {
fog: 'stack'
};

for (var name in buz) {
if (buz.hasOwnProperty(name)) {
console.log('this is fog (' + name + ') for sure. value: ' + buz[name]);
}
else {
console.log(name); // toString or something else
}
}

참조: MDN

Share