0
私は小さなJavaScriptライブラリを作成しようとしているRubyプログラマーです。coffeeスクリプトクラスとサブクラスの変数を上書きする
私はJavaScriptの専門家ではないので、私はコーヒースクリプトを手伝っています。
アイデア:
私は機能の一部小片を共有するすべてのそれらのいくつかの小さなJavaScriptのウィジェットを作成します。
共有機能と設定はBase
クラスにあります。すべてのウィジェットはBase
から継承する独自のクラスを持ち、独自の設定(さらにはBase
の上書き設定)を設定できます。
最後に、ウィジェットがインスタンス化されると、ウィジェット自体のデフォルトオプションを上書きするオプションハッシュを渡すことができます。
それは、これまでに次のようになります。
@Adg = {}
class Adg.Base
config =
debugMessage: false
hiddenCssClass: 'visually-hidden'
# Constructor. Should not be overridden; use @init() instead.
#
# - Arg1: The DOM element on which the script should be applied (will be saved as @$el)
# - Arg2: An optional hash of options which will be merged into the global default config
constructor: (el, options = {}) ->
@config = config
@$el = $(el)
for key, val of options
@config[key] = val
@init()
# Dummy, must be overridden in inheriting classes.
init: ->
throw 'Classes extending App must implement method init()!'
class Adg.Autocomplete extends Adg.Base
config =
suggestionsContainer: 'fieldset'
suggestionsContainerLabel: 'legend'
alertsContainerId: 'alerts'
init: ->
# Merge config into existing one
for key, val of config
@config[key] = val
これは私に動作しますが、不器用な感じ:
- 私は上書きされてはならないデフォルト
constructor
を作成するために持っていることを好きではありませんクラスを継承することによって(私は代わりにinit()
メソッドを追加します) - 各継承クラスで、私は手動で構成をマージする必要があります