0

Coffeescript では、作成済みのオブジェクトのコンストラクターを呼び出すことはできますか? このような:

class Snake
  constructor: (@name) ->

obj = new Snake()
// do stuff
obj.constructor("Python")
4

2 に答える 2

4

はい、できます。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
于 2013-03-05T02:10:07.350 に答える
0

このコードは次のようにコンパイルされます。

var Snake, obj;

Snake = (function() {
  function Snake(name) {
    this.name = name;
  }

  return Snake;
})();

obj = new Snake();

したがって、constructor()メソッドはありません。coffeescript はそれを使用してSnake()関数を生成するだけです。

いいえ、できません。しかし、コードがオブジェクト指向であるのに、なぜそれをしたいのでしょうか?

于 2013-03-05T01:05:27.720 に答える