在javascript中显式返回构造函数中的值

gri*_*eak 6 javascript constructor return-value

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

在上面的链接中,John Resig建议new foo在调用者最初忘记的情况下调用并返回构造函数.

这对我来说有点意义,但后来我得到一个严格的错误,因为我的构造函数并不"总是"返回一个值.在javascript中获得对构造函数的一点理解后,我停止了返回,this因为new自动执行此操作.

我的问题是,我应该......

  1. 不使用描述的防御技术?
  2. 在构造函数的末尾返回这个?
  3. 我不知道的神秘选择?

tob*_*ies 4

返回this是没有意义的,因为如果调用者忘记添加new,那么this将是文档,而不是foo. 我通常做的是启动一个构造函数if(! (this instanceof foo)) return new foo();或类似的东西

编辑:经过更仔细的阅读后,如果您想避免严格的错误并且您已经这样做了,是的,return this最后通常是一个好主意