익명 객체에 메소드가 있는지 확인하는 방법?
익명 개체가 생성되었는지 어떻게 확인할 수 있습니까?
var myObj = {
prop1: 'no',
prop2: function () { return false; }
}
실제로 prop2가 정의되어 있습니까?
prop2
항상 함수로 정의되지만 일부 객체의 경우 필요하지 않으며 정의되지 않습니다.
여기에 제안 된 것을 시도했습니다. 기본 JavaScript 객체에 속성 / 메소드가 있는지 확인하는 방법은 무엇입니까? 그러나 나는 그것이 익명의 객체에 대해서는 효과가 없다고 생각합니다.
typeof myObj.prop2 === 'function';
함수가 정의되어 있는지 알려줍니다.
if(typeof myObj.prop2 === 'function') {
alert("It's a function");
} else if (typeof myObj.prop2 === 'undefined') {
alert("It's undefined");
} else {
alert("It's neither undefined nor a function. It's a " + typeof myObj.prop2);
}
당신이 원하는 hasOwnProperty()
:
var myObj1 = {
prop1: 'no',
prop2: function () { return false; }
}
var myObj2 = {
prop1: 'no'
}
console.log(myObj1.hasOwnProperty('prop2')); // returns true
console.log(myObj2.hasOwnProperty('prop2')); // returns false
참고 자료 : Mozilla , Microsoft , phrogz.net .
3 옵션
typeof myObj.prop2 === 'function'
속성 이름이 동적 / 생성되지 않은 경우myObj.hasOwnProperty('prop2')
속성 이름이 동적이고 직접 속성인지 확인 (프로토 타입 체인이 아님)'prop2' in myObj
속성 이름이 동적 인 경우 프로토 타입 체인을 확인하십시오.
"익명 개체"란 무엇을 의미합니까? myObj
변수에 객체 리터럴을 할당했기 때문에 익명이 아닙니다. 당신은 이것을 테스트 할 수 있습니다 :
if (typeof myObj.prop2 === 'function')
{
// do whatever
}
그것을하는 한 가지 방법은 if (typeof myObj.prop1 != "undefined") {...}
나는 이것이 오래된 질문이라는 것을 알고 있지만 OP가 존재를 확인하기를 원할 때 모든 대답이 메소드가 존재 하고 함수 인지 확인하는 것에 놀랐습니다 . 함수가 (많은 사람들이 언급했듯이) 알기 위해 다음을 사용할 수 있습니다.
typeof myObj.prop2 === 'function'
그러나 조건으로 사용할 수도 있습니다.
typeof myObj.prop2
또는:
myObj.prop2
함수가로 평가 true
하고로 undefined
평가하기 때문 false
입니다. 따라서 멤버가 존재하면 함수 일 수 있다는 것을 알고 있다면 다음을 사용할 수 있습니다.
if(myObj.prop2) {
<we have prop2>
}
또는 표현에서 :
myObj.prop2 ? <exists computation> : <no prop2 computation>
참고 URL : https://stackoverflow.com/questions/3007460/how-to-check-if-anonymous-object-has-a-method
'IT박스' 카테고리의 다른 글
sed가“알 수없는`s '옵션”오류와 함께 실패 (0) | 2020.06.27 |
---|---|
extern“C”가 필요한 이유 {#include (0) | 2020.06.27 |
문자열 배열을 문자열로 변환 (0) | 2020.06.27 |
CSS로 입력 및 제출 버튼의 스타일을 지정하는 방법은 무엇입니까? (0) | 2020.06.27 |
Ruby에서 중복 키를 덮어 쓰지 않고 두 개의 해시를 병합하려면 어떻게해야합니까? (0) | 2020.06.26 |