Jquery 中的扩展方法$.extend() 和$.fn.extend()

jQuery为开发插件提拱了两个方法分别是:·

   1、jQuery.extend()  or  $.extend()函数用于将一个或多个对象的内容合并到目标对象; 

         语法:.extend( [deep ], target, object1 [, objectN ] )

       

 

案例1:属性

<body>
		 <div id="box"></div>
	</body>
</html>
<script src="js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	$(function(){
		
		//第一个对象
		var obj1={
			name:"张旭",
			health:{height:180,weight:77},
			age:18
		}
		 
		 //第二个对象
		var obj2={
			health:{weight:80},
			sex:"男"
		}
		
		//合并对象到jquery中
		
		//将obj2合并到obj1中,
		//deep:默认是false,浅拷贝:如果有重复的属性,后面会覆盖前面,但不会把height继承下来;
//		$.extend(obj1,obj2);
		
		//deep:true,深拷贝:如果有重复的属性,后面会覆盖前面,会把height继承下来;
		//显示输出合并的数据
		$.extend(true,obj1,obj2);
		
		//显示
		$("#box").append(JSON.stringify(obj1));
		
		
	});
</script>

效果: 

  false

 true

案例2:方法

<script src="js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	$(function(){
		
		//对象的方法
		var obj ={
			show:function(msg){
				alert(msg);
			}
		}
		
//		obj.show("hello!");
		
		//将方法合并到jquery中
		$.extend(obj);
		//jquery-3.3.1.js:3827 Uncaught TypeError: $.show is not a function
		//可以写成这样?
//		$.show("mike");
		
		//两数求和
//		function adds(a,b){
//			return a+b;
//		}
//		
//		var sum =adds(10,20);
//		console.log(sum);
		
		
		//
		$.extend({
			adds:function(a,b){
				return a+b;
			}
		});
		
//		console.log($.adds(200,50));
		
		//数组
		var arrs=["张旭","何小杰","王守宝","胡文俊"];
		//1遍历数组
//		$.each(arrs, function(index,ele) {
//			console.log(index,ele);
//		});
		

		//2自定义each2方法(数组名,函数(索引,元素))
//		 function each2(arr,fn){
//		 	for(var index in arr){
//		 		console.log(index,arr[index]);
//		 	}
//		 }
		
		//调用函数each2
//		each2(arrs,function(){});

       //3.
       $.extend({
       	  each2:function(arr,fn){
       	  	 for(var index in arr){
		 		fn(index,arr[index]);
		 	 }
       	  }
       })
		
		//调用自己写的each2
		$.each2(arrs, function(index,ele) {
			console.log(index,ele);
		});
	});
</script>

案例3: 封装一个方法类

 (1) 封装方法:

//对象
var units={
	adds:function(a,b){  //两数求和
				return a+b;
	},
	each2:function(arr,fn){ //遍历数据
       	  	 for(var index in arr){
		 		fn(index,arr[index]);
		 	 }
    },
    addzero:function(zero){ //不满足2位补0
    	return zero<10?'0'+zero:zero;
    }
}

//合并
$.extend(units);

(2)调用:

<script src="js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
<!--引入外部脚本-->
<script src="js/unit.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	$(function(){
	   console.log($.adds(10,50));
	   console.log($.addzero(9));
	   var arrs=["张旭","何小杰","王守宝","胡文俊"];
	   $.each2(arrs, function(index,ele) {
			console.log(index,ele);
		});
	});
</script>

 

   2、jQuery.fn.extend() or $.fn.extend() 函数为jQuery扩展一个或多个实例属性和方法

注意:jQuery.fn是jQuery的原型对象,其extend()方法用于为jQuery的原型添加新的属性和方法。这些方法可以在jQuery实例对象上调用 

案例1:全选 or 全部选

<body>
		 <button>全选</button>
		 <button>反选</button><br />
		 <input type="checkbox" name="" id="" value="" />玩游戏<br />
		 <input type="checkbox" name="" id="" value="" />唱歌<br />
		 <input type="checkbox" name="" id="" value="" />看电影<br />
	</body>
</html>
<script src="js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
	$(function(){
		//循环遍历button
		$("button").each(function(index,ele){
			//判断是哪一个按钮
			if(index==0){
				//单击事件
				$(this).click(function(){
					//全选
					$("input[type='checkbox']").check();
				});
			}else{
				//单击事件
				$(this).click(function(){
					//全选
                  	$("input[type='checkbox']").discheck();
				});
			}
			
		});
		
		
		//能否写成这样
//		 	$("input[type='checkbox']").check();
//		 	$("input[type='checkbox']").discheck();
		
		//原生对象
		$.fn.extend({
			check:function(){
				$(this).each(function(){
					this.checked=true; //this:DOM对象 
				});
			},
			discheck:function(){
				$(this).each(function(){
					this.checked=false; //this:DOM对象 
				});
			}
		});
		
	
		
	});
</script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值