Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
Object 인스턴스의 hasOwnProperty() 메서드는 해당 객체 자체의 고유한 속성인지 (상속 받은 속성이 아닌지) 나타내는 불리언 값을 반환합니다.
Note: Object.hasOwn() 가 권장됩니다. hasOwnProperty() 는 이를 지원하는 브라우저에서만 사용됩니다.
테스트를 위한 속성의 String 이름 혹은 심볼입니다.
객체가 특정 속성을 고유한 속성으로 가지고 있다면 true 를 반환하고 그렇지 않으면 false 를 반환합니다.
hasOwnProperty() 메서드는 특정 속성이 해당 객체의 고유한 속성이라면 이 값이 null 혹은 undefined 일지라도 true 를 반환합니다. 이 속성이 상속 받은 속성이거나 어디에서도 정의되지 않았다면 false 를 반환합니다. in 연산자와는 별개로, 이 메서드는 특정 속성이 해당 객체의 프로토타입 체인에서 지정된 것인지 검증하지 않습니다.
이 메서드는 대다수의 JavaScript 객체에서 호출될 수 있습니다. 많은 객체가 Object 에서 파생되었고, 이 메서드를 상속받기 때문입니다. 예를 들어 Array도 Object이기 때문에 hasOwnProperty() 메서드를 사용하여 인덱스가 존재하는지 확인할 수 있습니다.
이 메서드는 재구성된 객체 혹은 Object.prototype 에서 상속되지 않은 null 프로토타입 객체에서는 유효하지 않습니다.
아래 코드는 example 객체가 prop 이라는 이름의 속성을 포함하고 있는지 확인하는 방법을 보여줍니다.
아래 예제는 직접적인 속성과 프로토타입 체인을 통해 상속된 속성 사이의 차이점을 보여줍니다.
이 예제는 상속된 속성을 실행하지 않고 객체의 열거 가능한 속성을 반복하여 처리하는 방법을 보여줍니다.
for...in 루프는 열거 가능한 아이템만을 반복한다는 점을 유의하세요. 열거 가능하지 않은 속성들이 나오지 않는다고 해서 hasOwnProperty 가 열거 가능한 항목에만 적용된다는 것을 의미하지는 않습니다. Object.getOwnPropertyNames() 를 사용한다면 열거 가능하지 않은 속성들도 반복 처리할 수 있습니다.
JavaScript는 속성 이름 hasOwnProperty 을 보호하지 않습니다. 이 이름의 속성을 가지고 있는 객체는 부적합한 결과를 반환할 수도 있습니다.
이 문제를 해결하기 위한 가장 권장되는 방법은 Object.hasOwn() 를 지원하는 브라우저에서 이를 사용하는 방법입니다. 혹은 외부 hasOwnProperty 를 사용하는 대안도 있습니다.
처음 두 가지 경우에는 새로 생성된 객체가 있다는 점을 유의해야 합니다.
null 프로토타입 객체는 Object.prototype 로부터 상속된 것이 아니기 때문에 hasOwnProperty() 에 접근할 수 없습니다.
이 경우의 해결책은 이 섹션에서 확인했던 것과 동일합니다. 참조를 위해 Object.hasOwn() 를 사용하거나 외부 객체에서 hasOwnProperty() 를 사용할 수도 있습니다.
| ECMAScript® 2027 Language Specification # sec-object.prototype.hasownproperty |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025년 6월 27일 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.