编程语言
首页 > 编程语言> > javascript-扩展而不覆盖

javascript-扩展而不覆盖

作者:互联网

我可以在XUI和骨干但我在设计中遇到了问题.我猜.

在那里.我想使用方法调用attr扩展XUI,该方法可以处理属性/值的哈希. jQuery做到了,Backbone利用了它.这就是为什么我要这样做.

不幸的是,XUI中已经有一个attr方法.因此,当我这样做时:

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

当然,XUI的原型只有一种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 */
  }
};

标签:backbone-js,xui,javascript
来源: https://codeday.me/bug/20191202/2086596.html