3

在 JavaScript 中,您可以使用一个小技巧来使new关键字可选:

function Frob(args) {
  if (!(this instanceof Frob)) {
    return new Frob(args);
  }

  // Normal initialization logic
}

这样,您可以Frob使用或不使用new关键字来实例化 a:

new Frob('foo'); // a Frob instance
Frob('bar');     // also a Frob instance

class有没有办法用CoffeeScript中的关键字来做到这一点?

4

1 回答 1

5

只需定义一个构造函数:

class Frob
  constructor: (args) ->
    return new Frob(args) unless this instanceof Frob
    ### Rest of your init code ###

输出

var Frob;

Frob = (function() {
  function Frob(args) {
    if (!(this instanceof Frob)) {
      return new Frob(args);
    }
  }

  return Frob;

})();
于 2013-08-26T18:18:57.357 回答