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

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

  // Normal initialization logic
}

这样,您可以使用或不使用Frob关键字实例化new:
new Frob('foo'); // a Frob instance
Frob('bar');     // also a Frob instance

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

最佳答案

只需定义一个构造函数即可:

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

Output:
var Frob;

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

  return Frob;

})();

08-19 08:40