class A
constructor: ->
method: ->
В приведенном выше примере метод не связан с классом, и ни один из них не является конструктором.не может определить конструктор как связанную функцию
class B
constructor: ->
method: =>
В этом случае метод привязан к классу. Он ведет себя так, как вы ожидаете, что нормальный метод объекта ведет себя и имеет доступ ко всем полям класса B. Но конструктор не связан? Это кажется странным. Поэтому я попробовал следующее.
class C
constructor: =>
method: =>
Это не скомпилировано. Я ожидаю, что синтаксис будет одинаковым во всех методах, связанных с классом.
Я хотел бы видеть оператора-оператора как оператора static
и оператора => как оператора dynamic
. Но это не похоже на то, что вы можете. Если бы вы могли, метод с оператором -> не мог быть вызван с супер. Но, на самом деле, вы можете. Почему это имеет смысл для синтаксиса объектно-ориентированного языка? Это, похоже, не согласуется с большинством правил наследования объектно-ориентированных языков.
То, что я подразумеваю под действием static vs dynamic, заключается в том, что статический метод нельзя переопределить, а динамический метод вы можете. Вместо динамического, может быть, я должен сказать, что виртуальный? –
Я не думаю, что любое из этих понятий сопоставляет различия между '->' и '=>'. Они имеют отношение к странности в переменной 'this' этого javascript. –
Я, я понимаю. но говоря о том, что язык компилируется в javascript в сторону, чтобы мы могли напрямую оценить coffeescript, эти правила синтаксиса имеют смысл? –