jQuery中extend的使用方法
本篇文章给大家分享的是jQuery中extend的使用方法的操作详解,内容挺不错的,希望可以帮助到有需要的朋友
方法介绍
jQuery 的 API 手册中,extend 方法挂载在 jQuery 和 jQuery.fn 两个不同的对象上,但在 jQuery 内部代码实现的是相同的,只是功能各不相同。
先看看官方给出的解释:
jQuery.extend Merge the contents of two or more objects together into the first object. 把两个或者多个对象合并到第一个对象当中;
jQuery.fn.extend Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. 把对象挂载到 jQuery 的 prototype 上以扩展一个新的 jQuery 实例方法 。
虽然官方对 jQuery.extend 的扩展方法功能只字未提,但是它也同样具有扩展 jQuery 类方法 的功能。
合并对象
首先,我先来介绍一下 extend 函数在 合并对象 方面的用法。
jQuery.extend(target [, object1] [, objectN])
合并 object1 ... objectN 到 target 对象,如果只有一个参数,则该 target 对象会被合并到 jQuery 对象中。
var obj1 = { name: 'Tom', age: 21 } var obj2 = { name: 'Jerry', sex: 'boy' } $.extend(obj1, obj2); // {name: "Jerry", age: 21, sex: "boy"} obj1 // {name: "Jerry", age: 21, sex: "boy"} obj2 // {name: "Jerry", sex: "boy"}
上述代码展示的是将 obj2 对象合并到 obj1 对象中,这种方法会 改变 obj1 对象的结构。如果你 不想改变 合并目标对象的结构,你可以这么做。
var obj1 = { name: 'Tom', age: 21 } var obj2 = { name: 'Jerry', sex: 'boy' } $.extend({}, obj1, obj2); // { name: "Jerry", age: 21, sex: "boy" } obj1 // { name: "Tom", age: 21 } obj2 // { name: "Jerry", sex: "boy" }
深浅拷贝
jQuery.extend([deep], target, object1 [, objectN])
和上面的讲述的不同的是,该方法多了一个类型为 boolean 的 [deep] 传参,当其为 true 时,将 object1 , objectN 深度复制 后合并到 target 中。
首先,我们理解一下什么叫做 深度复制 。看看其和 浅度复制 有什么区别。
var obj1 = { name: "John", location: { city: "Boston", county: "USA" } } var obj2 = { last: "Resig", location: { state: "MA", county: "China" } } $.extend(false, {}, obj1, obj2); // { name: "John", last: "Resig", location: { state: "MA", county: "China" }} $.extend(true, {}, obj1, obj2); // { name: "John", last: "Resig", location: { city: "Boston", state: "MA", county: "China" }}
由此可见,执行 深度复制 会递归遍历每个对象中含有复杂对象(如:数组、函数、json对象等)的属性值进行复制,而且 浅度复制便不会这么做。
方法扩展
上述的 extend 方法中的 target 参数是可以省略的。如果省略了,则该方法就只能传入一个 object 参数,该方法功能是将该 object 合并到调用 extend 方法的对象中。
我们通常会使用这种方式来对 jQuer进行一些方法上的扩展。
引子
jQurey 提供了两种方法扩张方式,分别为jQuery.fn.extend(object)
和jQuery.extend(object)
.
想要搞清楚两种扩展方式之间的区别的话,先要了解什么是jQuery.fn
.
本猿参考了 jQuery 的源码,发现其中玄机:
jQuery.fn = jQuery.prototype = { init: function(selector, context) { // ... }; }
jQuery.fn = jQuery.prototype
这句代码明确指出jQuery.fn
指代的就是 jQuery 的原型。
其次,我们要引入两个概念 类方法 和 实例方法 。
类方法 是直接可以使用类引用,不需要实例化就可以使用的方法。一般在项目中 类方法 都是被设置为工具类使用;
实例方法 必须先创建实例,然后才能通过实例调用该 实例方法 。
jQuery
可以看做是这个封装得非常好的类,而我们可以使用jQuery选择器
来创建 jQuery 的实例。比如:使 id 选择器$('#btn')
来创建一个实例。
区别
jQuery.extend(object)
相当于对 类方法 的扩展。
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
jQuery.fn.extend(object)是对jQuery.prototype上的扩展。
jQuery.fn.extend = jQuery.prototype.extend
这种方式相当对 实例方法 的扩展。
举个栗子:
开发一个简单的小功能,使用该方法可以使选定元素内的文字变红。
$.fn.extend({ setRed: function() { $(this).css("color", "red"); } }); $('.tip').setRed();
$(".tip")
创建了一个jQuery实例
,通过它可以调用成员方法setRed
.
上述代码可以实现预想的扩展,但最好返回this
以满足 jQuery 链式操作 的需要。
改良之后,代码如下:
$.fn.extend({ red: function() { return $(this).css("color", "red"); } });
以上是jQuery中extend的使用方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

DirectX修复工具是专业的系统工具,主要功能是检测当前系统的DirectX状态,如果发现异常就可以直接修复。可能还有很多用户不清楚DirectX修复工具怎么用吧,下面就来看看详细教程。 1、使用修复工具软件进行修复检测。 2、如果修复完成后提示C++组件存在异常的问题,请点击取消按钮,然后点击工具菜单栏。 3、点击选项按钮,选择扩展,点击开始扩展按钮。 4、扩展完成后再重新进行检测修复即可。 5、如果修复工具操作完成后仍未解决问题,可以尝试卸载重新安装报错的程序。

有很多朋友还不知道百度网盘怎么用,所以下面小编就讲解了百度网盘的使用方法,有需要的小伙伴赶紧来看一下吧,相信对大家一定会有所帮助哦。第一步:安装好百度网盘后直接登录(如图所示);第二步:然后可根据页面提示选择“我的分享”和“传输列表”(如图所示);第三步:在“好友分享”里可以把图片和文件直接分享给好友(如图所示);第四步:接着选择“分享”后可勾选电脑文件或者网盘文件(如图所示);第五步:然后就可以寻找好友(如图所示);第六步:还可以在“功能宝箱”中寻找自己需要的功能(如图所示)。上面就是小编为大

KMS激活工具是一种用于激活微软Windows和Office产品的软件工具。KMS是KeyManagementService的缩写,即密钥管理服务。KMS激活工具通过模拟KMS服务器的功能,使得计算机可以连接到这个虚拟的KMS服务器,从而实现对Windows和Office产品的激活。KMS激活工具体积小巧,功能强大,可以一键永久激活,无需联网状态就可以激活任何版本的window系统和任何版本的Office软件,是目前最成功的且经常更新的Windows激活工具,今天小编就给大家介绍一下kms激活工

potplayer是一款非常强大的媒体播放器,但不少伙伴还不知道potplayer怎么用,今天小编就来详细介绍一下potplayer的使用方法,希望能帮助大家。1、PotPlayer快捷键PotPlayer播放器默认常用快捷键如下:(1)播放/暂停:空格(2)音量:鼠标滚轮,上下方向键(3)前进/后退:左右方向键(4)书签:P-添加书签,H-查看书签(5)全屏/还原:Enter(6)倍速:C-加速,X-减速,Z-复位(按一次调整0.1倍速度,可以在0.2到12倍速之间调节)(7)上/下一帧:D/

相信很多用户都在使用小马win7激活工具,但是你们知道小马win7激活工具如何使用吗?接着,小编就带来了小马win7激活工具使用的方法,对此感兴趣的用户快来下文看看吧。第一步,在重装系统后,进入“”我的电脑,点击上方菜单中的“系统属性”,查看Windows激活状态。第二步,点击在网上下载win7激活工具,点击打开,(资源很多哪里都有)。第三步,打开小马激活工具后,点击“一件永久激活Windows”。第四步,等待激活程序完成激活。第五步,再次查看Windows激活状态,发现系统已经激活。

jQuery中如何使用PUT请求方式?在jQuery中,发送PUT请求的方法与发送其他类型的请求类似,但需要注意一些细节和参数设置。PUT请求通常用于更新资源,例如更新数据库中的数据或更新服务器上的文件。以下是在jQuery中使用PUT请求方式的具体代码示例。首先,确保引入了jQuery库文件,然后可以通过以下方式发送PUT请求:$.ajax({u

标题:jQuery小技巧:快速修改页面所有a标签的文本在网页开发中,我们经常需要对页面中的元素进行修改和操作。在使用jQuery时,有时候需要一次性修改页面中所有a标签的文本内容,这样可以节省时间和精力。下面将介绍如何使用jQuery快速修改页面所有a标签的文本,同时给出具体的代码示例。首先,我们需要引入jQuery库文件,确保在页面中引入了以下代码:<

标题:使用jQuery修改所有a标签的文本内容jQuery是一款流行的JavaScript库,被广泛用于处理DOM操作。在网页开发中,经常会遇到需要修改页面上链接标签(a标签)的文本内容的需求。本文将介绍如何使用jQuery来实现这个目标,并提供具体的代码示例。首先,我们需要在页面中引入jQuery库。在HTML文件中添加以下代码:
