質問
CSに次のクラスがあるとしましょう
class Foo
foo:
one: 1
two: 2
プロパティが返される が必要class Bar extends Foo
です。スーパークラスの既存のプロパティに追加するだけのクラス定義でこれを行う方法はありますか?foo
{one: 1, two: 2, three: 3}
Bar
three: 3
foo
Foo
ユースケース/回避策
上で説明したようなことができるかどうか、興味があります。ただし、私の使用例では、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