Javascript Coffeescript对象创建验证
如果不满足某些条件,是否可以在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 但使用该代码仍然可以创建对象。做这件事的最佳方法是什么?您需要在调用站点检查验证条件,在构造函数内部,这已经太晚了 请
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中并不常用这种方式