//Description: Merge the contents of two or more objects together into the first object.
//描述:合并2个或多个对象到第一个对象
jQuery.extend( [deep], target, object1 [, objectN] )
/*
-- deep If true, the merge becomes recursive (aka. deep copy).
deep 如果为true,那么合并就变成递归形式(可选的参数)
-- target The object to extend. It will receive the new properties.
target 指向要拓展的对象,它将接受新的属性
-- object1 An object containing additional properties to merge in.
object1 带有额外属性将要合并到target的对象
-- objectN Additional objects containing properties to merge in
跟object1一个屌样。
*/
//官方秘籍描述
When we supply two or more objects to $.extend(), properties from all of the objects are added to the target object.
//插两个对象(多几个也没关系的)到$.extend(),不论公母,这些对象都能很好的合体了。
If only one argument is supplied to $.extend(), this means the target argument was omitted. In this case, the jQuery object itself is assumed to be the target. By doing this, we can add new functions to the jQuery namespace. This can be useful for plugin authors wishing to add new methods to JQuery.
//只有一个对象插入extend()的时候,调用extend()的对象就无耻的变成了target来跟插入的对象合体,虽然这种行为很无耻,但是,日后,记住是日后,我们可以用这个特性来拓展JQuery的函数库,也是在日后你会发现这个特性还是很屌的。
Keep in mind that the target object (first argument) will be modified, and will also be returned from $.extend(). If, however, we want to preserve both of the original objects, we can do so by passing an empty object as the target:
//秘籍中说这一段很重要,举例说明最简单
var object = $.extend(object1, object2);
//快看,object1 就会被迫与 object2 进行合体!!因为object1被侵入了,所以,虽然外表看上去还是那个纯洁的object1(名字不变),实际上它的里面已经有了object2的东西了。函数返回后object就有了obj1和obj2的特性,实际上这样就是object = object1
//!!!重点来了!!! 有时候object1即想跟object2合体又想立个牌坊,想一直保持它原来的特性不变,地球人是很聪明的,发明了一种保护措施,就像下面这样
var object = $.extend({},object1, object2);//{}是空对象
//所以,如果想要保护object1,记得要采取保护措施,一定要带{},切记切记....
//下面这段看例子就非常明了
//Example one
//不进行递归合并
<script>
var object1 = {
apple: 0,
banana: {weight: 52, price: 100},
cherry: 97
};
var object2 = {
banana: {price: 200},
durian: 100
};
/* merge object2 into object1 */
$.extend(object1, object2);
//输出结果
object1: {"apple":0,"banana":{"price":200},"cherry":97,"durian":100}
//Example2
//递归合并
var object1 = {
apple: 0,
banana: {weight: 52, price: 100},
cherry: 97
};
var object2 = {
banana: {price: 200},
durian: 100
};
/* merge object2 into object1, recursively */
$.extend(true, object1, object2);
//输出结果
object1:{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}
//!!!!!!!!!很重要!!!!!!!!!!!!!!!!!!
//文档中说 (Passing false for the first argument is not supported.)
//所以不要传 false 到第一个参数,要么放true要么什么也不放
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
/* merge defaults and options, without modifying defaults */
var settings = $.extend({}, defaults, options);
//输出结果
defaults -- {"validate":false,"limit":5,"name":"foo"}
options -- {"validate":true,"name":"bar"}
settings -- {"validate":true,"limit":5,"name":"bar"}
分享到:
相关推荐
1. **封装功能**:首先,我们需要把具体的功能封装到一个函数中。例如,我们可以创建一个`share`函数,接受一些参数,如分享的平台和链接等。 ```javascript function share(options) { // 处理选项和参数 var ...
`jQuery.extend()` 用于合并一个或多个源对象(`object1, object2, ..., objectN`)的属性到目标对象(`target`)中。如果提供了`deep`参数,并且其值为`true`,则执行深度合并,即如果源对象和目标对象有嵌套的对象...
1. 包裹函数:jQuery对象与DOM元素是两个不同的概念。通过"$"函数,我们可以将HTML元素转换为jQuery对象,例如`$("#myElement")`选取ID为"myElement"的元素。 2. 选择器:jQuery支持CSS选择器,如类选择器("....
例如,jQuery 1.x系列注重向后兼容,2.x移除了对IE6/7的支持以提升性能,而3.x进一步提升了现代浏览器下的性能并引入更多新特性。 总结,jQuery作为一款优秀的JavaScript库,以其简洁的API和强大的功能,大大提高了...
jQuery还提供了一些工具函数,如`.each()`, `.extend()`, `.trim()`等,它们在日常开发中非常实用。`.each()`用于迭代数组或对象,`.extend()`可以合并对象,`.trim()`则用于去除字符串两端的空白字符。 结合博文...
### jQuery-1.3.2 学习笔记 #### 一、概述 jQuery 是一个快速、简洁的 JavaScript 库,使用户能更方便地处理 HTML 文档、选择 DOM 元素、制作动画效果,并为应用程序添加 AJAX 交互。版本 1.3.2 在 2009 年 2 月...
通过`$.fn.extend()`可以创建自己的插件,增强jQuery的功能。 **版本与兼容性** jQuery有多个版本,如3.x针对现代浏览器,而2.x支持IE6/7。最新版的jQuery致力于保持向后兼容,但推荐使用最新稳定版以获得最佳性能...
### JQuery 1.3 笔记知识点总结 #### 属性操作 (Attribute) 1. **添加样式** - `$("p").addClass("css类名")`: 给指定的`<p>`元素添加一个CSS类名定义的样式。 2. **添加属性/值** - `$("img").attr({"属性...
此外,笔记还会涉及jQuery插件的开发和使用,讲解如何利用jQuery.extend()扩展功能,以及如何编写符合jQuery规范的插件,以满足个性化的网页需求。 最后,笔记可能会探讨jQuery与最新前端框架(如React、Vue、...
**jQuery 使用笔记一** 在Web开发领域,jQuery是一款非常受欢迎的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。这篇笔记将深入探讨jQuery的核心概念和基本用法。 ### 1. ...
### jQuery 笔记精要点梳理 #### 一、jQuery 概述 - **JavaScript库的作用与对比**:JavaScript库的出现极大地简化了前端开发过程,它们封装了大量的预定义对象和实用函数,使得开发者能够轻松地构建具有高度交互...
在这篇"jQuery学习笔记之回调函数"中,我们将深入理解回调函数的工作原理及其在jQuery中的应用。 1. 回调函数定义: 回调函数是一种特殊的函数,它作为参数传递给其他函数,并在特定条件满足或特定事件触发时由该...
例如,jQuery对象($)的构造函数是如何封装多个DOM元素的,以及如何通过链式调用来实现方法的连续执行。此外,还可以通过分析`each()`方法理解jQuery如何遍历元素集合,以及`extend()`方法如何实现对象的合并和深...
在本篇“jQuery学习笔记(二)”中,我们将深入探讨jQuery库的更多核心功能和常见用法。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作以及Ajax交互等任务。这篇笔记将帮助你进一步...
这篇笔记将深入探讨jQuery的基础知识和常见应用,帮助读者快速掌握这个强大的库。 一、jQuery简介 jQuery由John Resig在2006年创建,其核心理念是"Write Less, Do More"。它通过封装JavaScript的DOM操作、事件处理...
这个笔记主要涵盖了我在尚硅谷学习jQuery过程中所学到的关键知识点,包括基本概念、选择器、DOM操作、事件处理、动画效果以及Ajax请求。 1. **基本概念与引入** - jQuery的核心理念是“Write Less, Do More”。它...
《jQuery Web开发笔记详解》 在Web开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本篇将深入探讨jQuery的核心概念、常用API以及在实际项目中的...
- 自定义插件:通过`.extend()`方法创建自己的jQuery插件,增强其功能。 6. **与其他技术的结合** - **JavaScript/jQuery关系**: jQuery是对JavaScript的封装,可以在jQuery中使用原生JavaScript代码。 - **C#和...
- **扩展jQuery对象**:通过`$.extend()`方法扩展jQuery对象的功能,或使用`$.fn.extend()`扩展元素操作方法。 3. **错误处理与调试**: - **异常捕获**:使用try-catch语句捕获并处理可能发生的异常。 - **日志...