jQuery extend

阅读更多

开始看看jquery插件

 

$.extend和$.fn.extend区别

参考:http://www.cnblogs.com/luckboy/archive/2009/06/25/1510870.html

 

$.extend  
1、对jQuery本身扩展,比如新增方法

$.extend({
	min:function(a,b){return a >= b ? b : a}
})
console.log($.min(1,4.5))

 

 

2、合并多个对象

 有两个对象:

var obj1 = {"name":"robin", location:{"city":"chengdu","desc":"javaer"}}
var obj2 = {"last":"robin", location:{"city":"chengdu","job":"java"}}

 当$.extend(obj1, obj2)时,会将obj2有而obj1没有的属性设置到obj1上,同时会覆盖obj1中存在的属性

$.extend(obj1,obj2)  
console.log(JSON.stringify(obj1));
//{"name":"robin","location":{"city":"chengdu","job":"java"},"last":"robin"}
console.log(JSON.stringify(obj2));
//{"last":"robin","location":{"city":"chengdu","job":"java"}} 

当然也可以将合并的结果赋值到新的对象上,有两种方式,前一种obj1仍然会被修改

var nobj1 = $.extend(obj1,obj2) ;
var nobj2 = $.extend({},obj1,obj2);

前一种obj1会被修改而后面的方法则不会修改obj1

写道
jQuery.extend(target,obj1,[objN])
target: 待修改的对象。
obj1:待合并到第一个对象的对象。
objN:带合并到第一个对象的对象(可选)。

 在jQuery中,对extend方法传入的多个参数进行合并,默认将第一个参数作为target对象,会将剩下的合并在该对象上。如果第一个对象是boolean,则默认取第二个对象为target

jQuery.extend = jQuery.fn.extend = function() {
	 var options, name, src, copy, copyIsArray, clone,
		target = arguments[0] || {},
		i = 1,
		length = arguments.length,
		deep = false;

	// Handle a deep copy situation
	if ( typeof target === "boolean" ) {
		deep = target;
		target = arguments[1] || {};
		// skip the boolean and the target
		i = 2;
	}

下面来看看第一个参数如果是boolean类型。从上面的例子我们看到,在obj1和obj2中合并的都是该对象的第一级属性,对嵌套的location都是看中一个整体去替换。当然也提供了类似"深拷贝"的方式,即可以对location属性进行合并:

var nobj1 = $.extend(true, obj1,obj2);
//var nobj2 = $.extend({},obj1,obj2) ;
console.log(JSON.stringify(obj1));
//{"name":"robin","location":{"city":"chengdu","desc":"javaer","job":"java"},"last":"robin"}

 

3、对$.extend和$.fn.extend

$.extend可理解为对jQuery的静态方法扩展,在使用时不需要实例化jQuery对象。而$.fn.extend可以理解为对jQuery添加成员方法。两者的区别可以用$.trim()和$("#id").empty()来表示。

$(function() {
	$.fn.extend({
		alertThis: function(){
			$(this).click(function(){
				alert($(this).val());
			});
		}
	})

	$("#idd").alertThis();
});

 打完收工。感谢http://www.iteye.com/topic/545971

 

 

你可能感兴趣的:(jquery,extend,plugin)