2013-10-28 3 views
0

수업 내에서 개체를 찾으려면 어떻게합니까? 클라이언트 코드에서클래스 내에서 개체를 찾으십시오.

function User(first, last){ 
    if (this instanceof User){ 
     this.name = first + " " + last; 

     //Is there a way here to find either User objects here? (John or Jane) 
     //How would I changed to the desired User object and start working with it? 
    } 
    else return new User(first, last); 
} 

, 나는 다음과 같은 한 :

User("John", "Smith"); 
User("Jane", "Doe"); 
+0

사용자 목록이있는 클래스를 만들어야합니다. – giammin

+0

나는이 질문을 정말로 이해하지 못합니다. "두 대상을 찾는다"는 것은 무엇을 의미합니까? 이전에받은 인수를 사용하여 기존 인스턴스를 반환하도록 생성자를 효과적으로 메모 하시겠습니까? –

+0

클라이언트가 생성 한 사용자 개체를 추적하는 방법이 있습니까? 그리고 사용자 목록에 대한 권장 사항도 있습니다. – Rod

답변

2

보통 별개의 클래스 UserManager을 만들 것

내 독립형 자바 스크립트 구성 요소입니다. 이 클래스는 사용자에게 액세스하는 유일한 방법입니다. 다른 클래스는 userManager.createUser(name)을 호출하여 새 사용자를 만들거나 userManager.findUser(name)을 만들어 기존 사용자를 만듭니다. 이상적으로 User 클래스는 관리자에게 로컬이므로 다른 클래스가 직접 인스턴스를 만들 수는 없습니다. UserManager가 createUser 메소드에 new User을 생성 할 때마다 해당 사용자를 다시 보내기 전에 해당 사용자를 내부 userList에 추가합니다. findUser 그러면 userList을 검색합니다.

또는 정적 변수으로 생성 된 사용자 배열을 User 클래스에 추가 할 수 있습니다. 정적 변수는 개별 인스턴스가 아닌 클래스 자체에 할당되는 변수입니다. 정적 변수는 Classname.variable 구문을 사용하여 작성하고 액세스하므로 귀하의 경우 User.ALL_USERS입니다.

+0

통찰력을 가져 주셔서 감사합니다! jsfiddle.net/KZm66/1 정적 변수를 사용하고 싶습니다. 그러나 구현까지 완전히 이해하고 있는지 확실하지 않습니다. 시도한 예는 나에게 경고를하지 않으며 이유를 모르겠습니다. – Rod

+0

@Rod 변수를 배열로 사용하기 전에 배열로 초기화해야합니다. http://jsfiddle.net/KZm66/2/ 3을보고 2가 아니라는 이유는 배열에 번호가 매겨진 엔트리를 만들 때 [0]부터 시작하는 모든 요소가 암시 적으로 만들어지는 것입니다. – Philipp

관련 문제