Вопрос

Я в некотором роде, чтобы создать соединение между 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]);
      }
    };
  }
});

Конечно, у прото Сюй есть только один метод ATTR. Мой. Как мне двое?

Что -то, что делает следующее, доступно:

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