for (var prop in obj) {
console.log(prop);
}
객체가 가지고 있는 프로퍼티뿐만 아니라 상속받은 프로퍼티까지 순회한다.
예제
var parent = Object.create({ parent: 123 });
parent.rabbit = "rabbit";
var child = Object.create(parent);
child.cat = "cat";
for (var prop in child) {
console.log(prop);
};
=> "rabbit", "cat" 출력
상속받은 프로퍼티말고 직접 가진 프로퍼티만 출력하고 싶을 경우 아래와 같이 코드 수정
for (var prop in child) { if (obj.hasOwnProperty(prop)) { console.log(prop); } }
object.hasOwnProperty(prop)
객체가 특정 프로퍼티를 가지고 있는지 확인
객체가 상속받은 프로퍼티말고 직접 가진 프러퍼티만 포함한다.
불리언 값으로 반환(ture/false)
예제
const newObj = {};
newObj.dog = "coco";
console.log(newObj.hasOwnProperty('dog'));
// true
console.log(newObj.hasOwnProperty('cat'));
// false
console.log(newObj.hasOwnProperty('hasOwnProperty'));
// false
// 객체가 가진 매소드는 맞지만,
// newObj가 직접적으로 가진 매소드는 아님!!