这是可能的,但它在生产中的使用应不惜一切代价避免。
更改一个经常与多个插件一起使用的库的核心功能是一个糟糕、危险、又糟糕又危险的想法。
您可能会导致被覆盖的方法以其原始方式进行接口和行为,并且仅对参数子集的行为有所不同;但是,在库的后续版本中,如果此核心方法发生更改,简而言之,您可能会被搞砸并不得不重新访问被覆盖的方法。
最好使用不同的方法名。也许,对于您的用途,您可以使用 style、xCss、cssExt 或类似的东西。
如果您正在寻找一种方法来结合您的方法和核心方法的功能,那么最好采用相反的方法。与其覆盖核心方法,不如用附加功能包装它,当然还有一个新名称。
jQuery.fn.xCss = (function() {
var compoundProperties = {
'padding': ['padding-top', 'padding-right' ...],
'border': ['border-width', 'border-style', ...],
'background': ['background-color', ...],
...
};
return function(property, value) {
// Use plugin functionality
if ( compoundProperties.hasOwnPropery(property) ) {
// Get value
if ( !value ) {
var propertySet = compoundProperties[property],
result = [];
for ( var i=0, l=propertySet.length; i<l; ++i ) {
result.push( this.css(propertySet[i]) );
}
return result.join(" ");
}
// Set value
...
return this;
}
// Use core functionality
return this.css.apply(this, arguments);
};
})();
* 代码未经测试或完成。