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()
関数を生成するだけです。
いいえ、できません。しかし、コードがオブジェクト指向であるのに、なぜそれをしたいのでしょうか?