2013-02-07 4 views
0
이 코드가

아니라면 그것을 설정 ...어떻게 자바 스크립트에서 객체의 속성에 대해 확인하는 기능을 만들고, 거기

var suitcase = { 
    shirt: "Hawaiian" 
}; 

var checkProp = function(obj, prop, val){ 
if(obj.hasOwnProperty(prop)){ 
    console.log(obj.prop); 
} else { 
    obj.prop = val; 
    console.log(obj.prop); 
} 
}; 
checkProp("suitcase","shorts","blue"); 

을 내가 그것을 실행하면 undefined를 반환합니다. 표면에 괜찮아 보인다. 구문 문제 나 비슷한 문제는 없습니다. 이 기능을 사용하려면 무엇을해야합니까?

답변

0

suitcase은 문자열이 아니고 var입니다.

checkProp(suitcase,"shorts","blue"); 

또한, 대신 obj.propobj[prop]를 사용하는 대신, 그것은

checkProp(suitcase,'shorts','blue'); 
0

Object 자체에 합격 읽어야하지 그것은 이름입니다.
는 보다

기타 (obj.prop, 당신은, 문자 그대로, 객체의 당신이 찾고있는 특성을 prop 속성을하지 액세스하는.로) 코드가 작동합니다. 그것은하지만, 이런 식으로 단축 될 수있다 : 당신이 원하는 것은 아마도 OBJ [소품]입니다

var checkProp = function(obj, prop, val){ 
    obj[prop] = obj[prop] || val; // If obj[prop] exists, set it to itself (does nothing), otherwise, set it's content to `val`. 
    console.log(obj.prop); 
}; 
+0

이 prop'가'obj' 프로토 타입에 있던'하면 그가 그것을 구현 한 방식으로 작동하지 않을 것입니다 , 그는 물건 자체에 대해서만 소품을 확인하고 있습니다. – 0xor1

0

당신은 몇 가지 다른 옵션을 가지고 있지만 난 당신의 솔루션이 작동 생각 대신

0

obj.prop의. 단지 작은 오류가 있습니다. 함수 호출시 :

checkProp('suitcase', 'shorts', 'blue); 

"suitcase"은 객체 일 때 문자열로 정의됩니다. 그것을 고치고 그것이 효과가 있는지보십시오.

편집 :

이 될 것 시도 할 수 있습니다 또 다른 옵션 :

var checkProp = function(obj, prop, val){ 
    if(obj) { 
     if(!obj[prop]) { 
      obj[prop] = val; 
     } 
     if(window.console && window.console.log) { 
      console.log(obj[prop]); 
     } 
    } 
}; 
+0

어떤 브라우저가'console/console.log'를 지원하지 않는지 확인해야합니까? o.O 이것은이 질문의 범위를 벗어나는 것 같습니다. – Cerbrus

+0

나는 당신의 기능을 좋아합니다. 좀 더 간결합니다. 내 기능은 오랜 시간 지속되고있다. 또한, 콘솔에 로깅을 지원하는 기능이 있는지 확인하는 것이 매우 유용합니다. – Jonathan

+0

@Cerbrus IE 9에서 문제가 발생했습니다. 디버거가 자동으로 연결되지 않고 개발자 도구가 열려 있지 않으면 오류가 발생합니다. 그냥 여분의 수표 일 뿐이야. 범위를 벗어 났지만 모든 브라우저에서 작동 할 답변을 게시하고 싶습니다. 내 설정이 조금 다를 수도 있습니다. 어느 쪽이든, 미안보다 안전해야합니다. – War10ck

0
var suitcase = { 
    shirt: "Hawaiian" 
}; 

var checkProp = function(obj, prop, val){ 
    if(obj.hasOwnProperty(prop)){ 
     console.log(obj[prop]); 
    } else { 
     obj[prop] = val; 
     console.log(obj[prop]); 
    } 
}; 
checkProp(suitcase,"shorts","blue"); 
관련 문제