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

时间:2011-01-27 02:52:24

标签: javascript constructor return-value

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

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

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

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

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

1 个答案:

答案 0 :(得分:4)

返回this毫无意义,因为如果调用者忘记添加new,则this将成为文档,而不是foo的实例。我通常做的是使用if(! (this instanceof foo)) return new foo();或类似的东西启动一个构造函数

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