익명 개체가 생성되었는지 어떻게 확인할 수 있습니까?
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>