jquery extend三种用法。
1. 对jquery 函数的扩展。
$.extend({
test:function(a,b){
return a>b;
}
})
$.test(1,2); //false
2. 对jquery元素方法的扩展
$.fn.extend({
checked:function(){
return this.each(function(){this.checked = true})
},
uncheck:function(){
return this.each(function(){this.checked = false})
}
})
$('#a]').check();
3. 对象扩展
jQuery.extend([deep], target, object1, [objectN])
用一个或多个其他对象来扩展一个对象,返回被扩展的对象。
如果不指定target,则给jQuery命名空间本身进行扩展。这有助于插件作者为jQuery增加新方法。 如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。 未定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。
例子1:合并 settings 和 options,修改并返回 settings。
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
结果:settings == { validate: true, limit: 5, name: "bar" }
例子2:合并 defaults 和 options, 不修改 defaults
var empty = {};
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = jQuery.extend(empty, defaults, options);
结果:
settings == { validate: true, limit: 5, name: "bar" }
empty == { validate: true, limit: 5, name: "bar" }