2011-01-27 5 views
6

http://ejohn.org/blog/building-a-javascript-library/명시 적으로 자바 스크립트에서 생성자에서 값을 반환

위의 링크에서 John Resig는 호출자가 원래 잊어 버린 경우 생성자에서 new foo를 호출하고 반환하는 방법을 제안합니다.

그것은 나에게 의미가 있지만 내 생성자가 '항상'값을 반환하지 않기 때문에 엄격한 오류가 발생합니다. javascript에서 생성자에 대한 이해를 얻으면 new이 자동으로 그 작업을 수행하기 때문에 this을 반환하지 않았습니다.

제 질문은, 제가해야 할 일은 ...

  1. 설명 된 방어 기술을 사용하지 않습니까?
  2. 내 생성자의 끝에 이것을 반환합니까?
  3. 내가 모르고있는 수수께끼의 옵션?

답변

4

호출자가 추가 잊어 버린 경우 new 다음 this 문서가 아닌 foo의 인스턴스가 있기 때문에 this를 반환하는 것은 무의미하다. 내가 뭘 보통 일은 그 효과

편집에 if(! (this instanceof foo)) return new foo(); 또는 뭔가 생성자를 시작할 수 있습니다 : 마지막에 당신이 엄격한 오류를 방지하려는 경우 더 조심 읽기 후, 당신은 예, 이미이 일을하는, return this입니다 대개는 좋은 생각입니다.

+0

맞아요, 그것이 저의 질문에 이르게 한 제안입니다. 오류가 발생했을 때 명시 적으로 반환하면 모든 것이 잘 될 때 암시 적으로 반환하기 때문에 엄격한 경고를받습니다. – griotspeak

+0

예, 모든 것이 잘 진행되면 반환하는 것이 좋습니다. – tobyodavies

관련 문제