我正在努力在XUI和amp;之间进行比较。 Backbone但我在设计中遇到了问题。我想。
就是这样。我想用方法调用attr
来扩展XUI,它可以处理attributes/values
的哈希值。 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'});
感谢阅读和帮助:)
答案 0 :(得分:3)
您需要保存对原始函数的引用,然后查看函数调用的参数,以确定您应该调用自己的版本或原始函数的天气。
像这样的东西(没有经过测试的代码,所以仅用于灵感):
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 */
}
};