jQuery插件写法

jQuery为开发插件,提供了两种方式:

$.extend

$.fn.extend

1.首先我们先了解一下$.extend:(extend(target: Object, object1: Object, objectN: Object, deep: Boolean, target: Object, object1: Object, objectN: Object): Object)

根据文档解释:“Merge the contents of two or more objects together into the first object.”,大概意思就是说,把两个或者更多内容合并到第一个对象中去;

举个例子来看一下:

合并两个对象到第一中去然后输出:

var object1={
	apple:0,
	banana:{weight:52,price:100},
	cherry:97
};
var object2={
	banana:{price:200},
	watermelon:10
};
//开始合并,并返回结果
$.extend(object1,object2);
//定义一个打印对象的方法
var printObj=function(obj){
	//定义一个数组
	var arr=[];
	//遍历对象并合并放到数组中
	$.each(obj,function(key,val)
	{
		var next=key + ' : ' ;
		//判断该值是否是对象,是的话递归,重新调用该函数,知道val不是对象为止,否则输出
		next +=$.isPlainObject(val)?printObj(val):val;
		//将连接好的字符串放到数组中
		arr.push(next);
	});
	//最后返回json格式的字符串
	return  '{'+arr.join(',')+'}';
};
//弹出结果
alert(printObj(object1));


结果为:

tips:如果你了解json的话对你理解这个很有帮助,其实extend()里面的参数形式都是json格式的;isPlainObject():判断是否是纯对象。

 

虽然JavaScript没有class的概念,但是我们用class思想去理解它,会更好理解。

想想,如果我们是把一个方法当作参数传进去呢,当然这时候extend()里面只能传一个{}.是不是也是类似上面的这种样式!$.extend({方法名:function(参数){方法体}});

所以$.extend()其实就是把参数当作一个静态的成员(方法或属性)传到jquery当中,这样我们在调用的时候就可以这样调用:$.方法名称(参数);比如:我们定义了一个弹出点击对象内容的方法:

$.extend({
alertCont:function(obj){
$(obj).click(function(){
alert($(this).html());
});
}
});

我们就是这么调用的:$.alertCont('td');

Tips2: jquery的extend还有一个重载类型,观察开头的extend的参数我们可以发现“deep: Boolean”这个参数,他的意思就是深度拷贝,我们第一例子中我们并没有指定具体值,因为默认不是深度拷贝也就是说deep的值为false,如果为:true则结果为:




2.$.fn.extend():其实就是向jquery当中传入“成员函数”,所以jquery就需要jquery实例来调用我们定义的方法。而不是通过$.methodName()来调用。但是具体传入的格式是类似的。

然后我们还是定义一个弹出点击对象内容的方法:

$.fn.extend({
alertCont:function(){
$(this).click(function(){
alert($(this).html());
});
}
}
);

然后调用:$('td').alertCont();


这里有一个非常好的网站:http://www.cnblogs.com/joey0210/p/3408349.html。更加详细的讲解了jquery插件,闭包等。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值