2011-01-27 6 views
6

http://ejohn.org/blog/building-a-javascript-library/Явного Возвращение значения из конструктора в JavaScript

В приведенной выше ссылке Резиг ПРЕДЛАГАЕТ вызов и возвращение new foo в конструкторе, если вызывающий абонент первоначально забыл.

, что имеет для меня какое-то значение, но затем я получаю строгую ошибку, потому что мой конструктор не «всегда» возвращает значение. Получив небольшое понимание конструкторов в javascript, я прекратил возвращать this, потому что new автоматически делает это.

Мой вопрос, я должен ...

  1. Не использовать оборонительную технику, описанную?
  2. верните это в конце моего конструктора?
  3. Тайный вариант, о котором я не знаю?

ответ

4

возвращение this бессмысленно, потому что, если абонент забыл добавить new то this будет документ, не является экземпляром foo. Что я обычно делаю, это запустить конструктор с if(! (this instanceof foo)) return new foo(); или что-то, что эффект

Edit: после более тщательного чтения, если вы хотите, чтобы избежать строгих ошибок и вы делаете это уже, да, return this в конце концов, обычно хорошая идея

+0

Право, это предложение, которое привело меня к вопросу. Если я явно возвращаюсь во время ошибки, я получаю строгую предупреждение, потому что я неявно возвращаюсь, когда все идет хорошо – griotspeak

+0

yep, поэтому возвращение этого, если все идет хорошо, вероятно, хорошая идея – tobyodavies

Смежные вопросы