JQuery $.extend 与$.fn.extend

JQuery $.extend 与$.fn.extend

JQuery的extend方法可以为对象拓展新的方法和属性。作为一种插件机制,具有很大的灵活性。$.extend的使用方法如下:

    var a = {"b":"bb","c":"cc"};
    var b = $.extend(a,{"d":"dd","e":"ee","b":"haha"});
    var c = $.extend({},{"d":"dd","e":"ee"});

上述代码结果如下:
a={b: “haha”, c: “cc”, d: “dd”, e: “ee”}
b={b: “haha”, c: “cc”, d: “dd”, e: “ee”}
c={d: “dd”, e: “ee”}

结果说明:

  • 当把{“d”:”dd”,”e”:”ee”,”b”:”haha”}绑定给a时,a的结构也被破坏,所以a的值也会发生变化。
  • 当把{“d”:”dd”,”e”:”ee”,”b”:”haha”}绑定给a时,若存在与a相同的键值,则会将a的键值覆盖。
  • c中未指定要绑定的对象,因此只有c结构发生变化

语法
$.extend(dest[,src1[,src2[, [,srcn]]]])

———————————————————————-

要想理解$.extend与$.fn.extend的区别,还需要再看一个JQuery帮助手册的例子:

jQuery.extend({
  min: function(a, b) { return a < b ? a : b; },
  max: function(a, b) { return a > b ? a : b; }
});
jQuery.min(2,3); // => 2
jQuery.max(4,5); // => 5
<input type="checkbox" ><input type="checkbox" ><input type="checkbox" ><input type="checkbox" >
<input type="radio"><input type="radio"><input type="radio"><input type="radio">
jQuery.fn.extend({
  check: function() {
    return this.each(function() { this.checked = true; });
  },
  uncheck: function() {
    return this.each(function() { this.checked = false; });
  }
});
$("input[type=checkbox]").check();
$("input[type=radio]").uncheck();

代码结果 :
筛选框全部选中,单选框全部未选中

代码解释:

jQuery.extend绑定的函数使用jQuery来调用,而jQuery.fn.extend绑定的函数使用$(“#id”)对象来调用,类似于静态方法通过类名直接调用和成员方法通过实例对象调用的区别。

$.extend有一个重载原型

语法
$.extend(boolean,dest[,src1[,src2[, [,srcn]]]])
从上述语法可知,参数多出一个布尔值,当boolean=true时,实现深度克隆:

    var result=$.extend( true,  {},  
    { a: "aa", b: {c: "cc",d:"dd"} },  
    { e: "ee", b: {c: "ad",f:"ff"} } );

result = {a: “aa”, b: {c: “ad”, d: “dd”, f: “ff”}, e: “ee”}
从result值可知,深度克隆会递规复制所有KEY值直到Value中不包含JSON对象并会覆盖相同KEY的VALUE值

当boolean=true时,实现浅克隆:

    var result=$.extend( false,  {},  
    { a: "aa", b: {c: "cc",d:"dd"} },  
    { e: "ee", b: {c: "ad",f:"ff"} } );

result = {a: “aa”, b: {c: “ad”, f: “ff”}, e: “ee”}
从result值可知,浅克隆只会复制第一层KEY值并会覆盖相同KEY的VALUE值

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值