Javascript Coffeescript对象创建验证

Javascript Coffeescript对象创建验证,javascript,coffeescript,Javascript,Coffeescript,如果不满足某些条件,是否可以在coffeescript中取消对象创建?我想这样做: class Foo constructor:(@name) -> return false if !name withName = new Foo("bar") #withName -> obj noName = new Foo #noName -> false 但使用该代码仍然可以创建对象。做这件事的最佳方法是什么?您需要在调用站点检查验证条件,在构造函数内部,这已经太晚了 请

如果不满足某些条件,是否可以在coffeescript中取消对象创建?我想这样做:

class Foo
  constructor:(@name) ->
    return false if !name

withName = new Foo("bar") #withName -> obj
noName = new Foo #noName -> false

但使用该代码仍然可以创建对象。做这件事的最佳方法是什么?

您需要在调用站点检查验证条件,在构造函数内部,这已经太晚了

请查看该类的已编译javascript:

 Foo = (function() {

    function Foo(name) {
      this.name = name;
      if (!name) return false;
    }

    return Foo;

  })();

  withName = new Foo("bar");

  noName = new Foo;

}).call(this);
应该更清楚一点为什么它不起作用

new
关键字发生在调用构造函数之前

像这样的(未经测试)怎么样

其汇总如下:

runIf = function(someVar, someDelegate) {
    if (someVar) return someDelegate(someVar);
  };

  withName = runIf("bar", function() {
    return new Foo("bar");
  });

  noName = runIf(null, function() {
    return new Foo();
  });

您需要在调用站点检查验证条件,在构造函数内部,这已经太晚了

请查看该类的已编译javascript:

 Foo = (function() {

    function Foo(name) {
      this.name = name;
      if (!name) return false;
    }

    return Foo;

  })();

  withName = new Foo("bar");

  noName = new Foo;

}).call(this);
应该更清楚一点为什么它不起作用

new
关键字发生在调用构造函数之前

像这样的(未经测试)怎么样

其汇总如下:

runIf = function(someVar, someDelegate) {
    if (someVar) return someDelegate(someVar);
  };

  withName = runIf("bar", function() {
    return new Foo("bar");
  });

  noName = runIf(null, function() {
    return new Foo();
  });

唯一的方法是从构造函数中抛出异常:

class Foo
  constructor:(@name) ->
    throw new Error('Name must be specified') if !name

但是,从风格上讲,异常在JS中并不常用这种方式。

唯一的方法是从构造函数中抛出异常:

class Foo
  constructor:(@name) ->
    throw new Error('Name must be specified') if !name
然而,从风格上讲,异常在JS中并不常用这种方式