質問

私はXUIとBackboneの間に互換性を作る方法ですが、私のデザインの問題に会いました。私は推測する。

そこにそれがある。メソッド呼び出しでXUIを拡張したいです attr のハッシュに対処できるでしょう attributes/values. 。 jqueryはそうし、バックボーンはそれを悪用します。それが私がこれをしたい理由です。

不運、すでにあります attr XUIのメソッド。だから、私がするとき:

xui.extend({
  attr:   function (attributes) {
    if (typeof attributes == "object") {
      for (var attr in attributes) {
        this.attr(attr, attributes[attr]);
      }
    };
  }
});

もちろん、XUIのプロトには1つのattrメソッドしかありません。私の。どうすれば2つ持つことができますか?

利用可能なことをしていること:

xui(element).attr('attr', 'value');
xui(element).attr({'attr': 'value', 'foo': 'bar'});

読んで助けてくれてありがとう:)

役に立ちましたか?

解決

元の関数への参照を保存してから、独自のバージョンまたはオリジナルを呼び出す必要がある天気を決定するために、関数が呼び出される引数を調べる必要があります。

このようなもの(テストされたコードではないので、インスピレーションにのみ使用してください):

var originalAttr = xui.attr;

xui.attr = function () {
  if(typeof arguments[0] === 'string') {
   originalAttr.apply(this, arguments);
  }
  else if(typeof arguments[0] === 'object') {
    for (var attr in attributes) {
      originalAttr.call(this, attr, attributes[attr]);
    }
  }
  else {
   /* unsupported arguments */
  }
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top