[javascript] 객체에 특정 메서드가 있는지 확인하는 방법
if (obj.hasOwnProperty('methodName') && typeof obj.methodName === 'function') {
// methodName 메서드가 obj 객체에 있는 경우
// 코드 작성
} else {
// methodName 메서드가 obj 객체에 없는 경우
// 코드 작성
}
위 예제에서 obj
는 확인하려는 객체를 나타내며 methodName
은 확인하려는 메서드명입니다. 먼저 hasOwnProperty
메서드를 사용하여 해당 프로퍼티가 객체에 직접 정의되어 있는지 확인한 다음, typeof
연산자를 사용하여 해당 프로퍼티가 함수인지 확인합니다.
참고로, ECMAScript 5부터는 Object.prototype
에 hasOwnProperty
메서드를 더 안전하게 사용하기 위한 Object.getOwnPropertyDescriptor
메서드가 추가되었습니다.
참고:
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor