Frage

Ich bin auf eine Weise, um COPT zwischen Xui & Backbone zu machen, aber ich habe ein Problem in meinem Design getroffen. Ich vermute.

Da ist es. Ich möchte XUI mit einem Methodenaufruf erweitern attr was in der Lage wäre, mit einem Hash von zu handhaben attributes/values. JQuery macht es und Backbone nutzt es aus. Deshalb möchte ich das tun.

Pech, es gibt bereits eine attr Methode in Xui. Also, wenn ich es tue:

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

Natürlich hat das Proto von Xui nur eine Attr -Methode. Mine. Wie kann ich zwei haben?

Etwas, das folgt: verfügbar:

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

Danke fürs Lesen und Hilfe :)

War es hilfreich?

Lösung

Sie müssen einen Verweis auf die ursprüngliche Funktion speichern und dann die Argumente ansehen, die die Funktion aufgerufen wird, um das Wetter zu bestimmen, das Sie Ihre eigene Version oder das Original nennen sollten.

So etwas (nicht getesteter Code, also nur zur Inspiration verwenden):

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 */
  }
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top