Явное возвращение значения из конструктора в JavaScript - PullRequest
6 голосов
/ 27 января 2011

http://ejohn.org/blog/building-a-javascript-library/

В приведенной выше ссылке John Resig предлагает вызвать и вернуть new foo в конструкторе, если вызывающая сторона изначально забыла.

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

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

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

1 Ответ

4 голосов
/ 27 января 2011

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

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

...