質問
CSに次のクラスがあるとしましょう
class Foo
foo:
one: 1
two: 2
プロパティが返される が必要class Bar extends Fooです。スーパークラスの既存のプロパティに追加するだけのクラス定義でこれを行う方法はありますか?foo{one: 1, two: 2, three: 3}Barthree: 3fooFoo
ユースケース/回避策
上で説明したようなことができるかどうか、興味があります。ただし、私の使用例では、Coffeescript のsuper呼び出しを使用して関数にすることで回避できるため、ブロックの問題ではありません。
私は現在バックボーンを使用しており、2 つのクラスがあります。1 つBackbone.Modelは最初のクラスから継承し、もう 1 つは最初のクラスから継承します。最初のクラスではdefaults、このモデルの作成時にインスタンス変数が渡されない場合にインスタンス変数が設定されるようにプロパティを設定しています。最初のクラスから継承するクラスには、このdefaultsオブジェクトに追加する追加のキーと値のペアがありますデフォルトを上書きしたい場合も同じ状況になります。
Backbone のオブジェクトのデフォルト値は Underscore のresultメソッドを使用して取得されるため、この場合の簡単な回避策defaultsは、同じオブジェクトを返す関数を単純に作成することです。Coffeescript では、これは信じられないほど簡単で、次のようになります。
class Foo
foo: ->
one: 1
two: 2
そしてBar、次のことができます。
class Bar extends Foo
foo: ->
_.extends super, three: 3