在 Coffeescript 中,我可以在创建对象后调用它的构造函数吗?像这样:
class Snake
constructor: (@name) ->
obj = new Snake()
// do stuff
obj.constructor("Python")
在 Coffeescript 中,我可以在创建对象后调用它的构造函数吗?像这样:
class Snake
constructor: (@name) ->
obj = new Snake()
// do stuff
obj.constructor("Python")
是的你可以。CoffeeScript 类语法只是 JavaScript 构造函数的语法糖,它们只是您可以调用的普通函数:
class Example
count: 0
constructor: (@name) ->
@count += 1
e = new Example 'foo'
console.log e.count # -> 1
console.log e.name # -> foo
# Call contructor again over the same instance:
Example.call e, 'bar'
console.log e.count # -> 2
console.log e.name # -> bar
# If you don't have the constructor in a variable:
e.constructor.call e, 'baz'
console.log e.count # -> 3
console.log e.name # -> baz
此代码编译为:
var Snake, obj;
Snake = (function() {
function Snake(name) {
this.name = name;
}
return Snake;
})();
obj = new Snake();
所以没有constructor()
方法,coffeescript只是用它来生成Snake()
函数。
所以不,你不能。但是,如果您的代码是面向对象的,为什么要这样做呢?