2016-07-14 4 views
0

을 소중히하지 액세스하기 위해 내가 가지고
me = { name: "Mo", age: 28, } 은 내가이 객체 예를 들어 재산 "높이"가 있는지 확인하려는 객체입니다. (그렇지 않습니다) 어떻게해야합니까? 예를 들어 속성에 "height"속성이 있으면 "5,7"값을 부여 할 수 있습니다.방법에서 자바 스크립트 객체 속성 이름이

참고 사항 : 속성 VALUE (me.name)은 확인하고 속성 NAME은 확인하고 싶지 않습니다.

감사합니다.

me.height = 100; 

작동 : 개체가 "높이"라는 이름의 속성을 가지고 있지 않은 경우, 당신은 여전히 ​​속성을 추가 할 수

if ("height" in me) { 
    // object has a property named "height" 
} 
else { 
    // no property named "height" 
} 

참고 :

답변

6

당신은 in 연산자를 사용할 수 있습니다 이전에 객체에 "height"속성이 있는지 여부 있다

또한 .hasOwnProperty 방법은 객체의 프로토 타입에서 상속 :

if (me.hasOwnProperty("height")) 

그와의 차이 in와 시험 .hasOwnProperty()는 속성이있는 경우 이 직접 같은 존재가 true를 돌려주는 것입니다 객체에 대한 속성이며 프로토 타입 체인을 통해 상속되지 않습니다.

if (Object.keys(me).indexOf("name") >= 0) { 
    //do the stuff 
} 

을하지만, 당신이 무엇을해야하는지는 height 속성이 나에게 기대하고, 계약 객체/클래스/모듈을 만들 수 있습니다 :

+0

을 사용할 수 있습니다 ... 고체 교훈을 나누기뿐만 아니라 유일한 해결책/스위치 문은 모든 가능성을 치료해야합니다 할 경우 반복적 인 곳이 같은 시나리오로 연결뿐만 아니라, . 조건문을 사용하지 않고 콘솔에 속성 이름을 출력하는 방법이 있습니까? 속성 이름>을 인쇄하십시오 (for 루프를 사용하지 않고)? – zzgooloo

1

직접 대답을 사용할 수 있습니다. 그렇지 않으면 예외를 throw해야합니다. 프로그래밍에서 최악의 상황은 절반 기대치입니다. 그것은

1

당신보다

if (me.hasOwnProperty('height')) 
{ 
} 
else 
{ 
}