2013-08-20 4 views
0

기본적으로 더미 마스터 객체를 만든 다음 prototype 속성을 통해 모든 자식에 속성을 추가했습니다. 물론 그것은 빈 속성입니다. in 연산자를 사용하여 조건부 검사를 수행하는 동안 객체에 새 속성이 있는지 확인하고 false로 출력하면 "아무 것도 없습니다." 속성 값이 아직 없기 때문에이게 있습니까?아직 값이 설정되지 않은 javascript 프로토 타입 속성

function Master(age, sex, location) 
{ 
    this.age = age; 
    this.sex = sex; 
    this.location = location; 
} 

var me = new Master(99, "Male", "Texas, USA"); 

Master.prototype.username; 


if("username" in me) 
{ 
    document.write("The prototype put the property there."); 
} 
else 
{ 
    document.write("Nothing there.<br />"); 
} 
+1

크롬에서는 '아무 것도 없습니다'라고 표시됩니다. 내가'Master.prototype.username = undefined'를 명시 적으로 설정하면'The prototype ... '을 봅니다. 어떤 브라우저를 실행하고 있습니까? 일반적으로 프로토 타입에 속성을 추가하는 것은 클래스 변수를 추가하는 것과 같습니다.이 예에서 'Master'의 모든 인스턴스는 'username'에 대해 동일한 값을 갖습니다. – dc5

답변

2

아직 부동산이 없기 때문에 그것은이다. 단지 재산을 읽으 려해도 그것이 생겨나는 것은 아닙니다. Master.prototype.username;window.foo과 같습니다. 단지 undefined으로 평가되지만 그 밖의 것은 없습니다. 당신이 값을 설정하려면보십시오

Master.prototype.username = undefined; 

또는 더 나은

Master.prototype.username = null; 

nullundefined의 차이는 그 속성이 null 있는지 확인하는 것이 더 쉽습니다 꽤 많이; 어떤 함수에 인수로 값 undefined을 전달하면 그들은 값을 전혀 전달하지 않았다고 생각합니다.

관련 문제