Jquery $.extend的重载方法详述
1 $.extend(result,item1,item2,item3,........) -这个重载方法主要是用来合并,将所有的参数都合并到result中,并返回result,但是这样会破坏result的结构.代码展示:
$(function () { var p1 = { name: "张三", age: 16, sex: "男" }; var p2 = { name: "李四", age: 22, sex: "女" }; var p3 = { name: "王五", age: 23, sex: "gay", height: "175cm" }; $.extend(p2, p3); var tr = "<tr><td>" + p2.name + "</td><td>" + p2.age + "</td><td>" + p2.sex + "</td><td>" + p2.height + "</td></tr>"; $('.table').append(tr); });
结果为:王五 23 gay 175cm 从结果进行分析两者的结果进行了合并,相同属性结果为最后一个参数的属性值为准。不相同的进行合并,最后返回的p2结果集结构上(多了heigth属性)发生了改变。
2.$.extend({},result,item1,item2,item3,........) -这个方法将合并之后的结果集存到了{}中,并返回,且不会破坏进行合并的两个集合的结构。
$(function () {
var p2 = { name: "李四", age: 22, sex: "女" };
var p3 = { name: "王五", age: 23, sex: "gay", height: "175cm" };
var result=$.extend({},p2, p3);
var tr = "<tr><td>" + result.name + "</td><td>" + result.age + "</td><td>" + result.sex + "</td><td>" + result.height + "</td></tr>";
$('.table').append(tr);
});
结果为:王五 23 gay 175cm 从结果进行分析两者的结果进行了合并,相同属性结果为最后一个参数的属性值为准。不相同的进行合并,最终生成{}集合,此时的p2结果集结构并没有发生改变。
观察上面的结果发现
3.$.extend(bool,{},result,item1,item2,item3,........) -这种情况常用于嵌套集合
当bool值为true时,两个集合之间的合并为深合并,因为p1,p2两个集合中的adress属性相同,但是adress还拥有子属性(而且两个集合的adress属性的子属性还不相同所以里面的子属性也按照外面的属性合并方法进行合并)这样的合并叫做深度合并 -前提是当bool值为true时。
$(function () {
var p2 = { name: "李四", age: 22, sex: "女",address:{ provice:"浙江",city:"湖州"} };
var p3 = { name: "王五", age: 23, sex: "gay", height: "175cm",address:{city:"杭州"} };
var result=$.extend(true,{},p2, p3);
var tr = "<tr><td>" + result.name + "</td><td>" + result.age + "</td><td>" + result.sex + "</td><td>" + result.height + "</td><td>" + result.address.provice + "</td><td>" + result.address.city + "</td></tr>";
$('.table').append(tr);
});
结果为:王五 23 gay 175cm 浙江 杭州
当bool值为false时,两个集合之间的合并叫做浅合并,因为p2,p3两个集合中的adress属性相同,但是此时的adress还用子属性(而且两个adress属性的子属性还不相同)因为bool值为false,所有合并只进行到adress属性级别,他的子属性不进行合并。代码如下:
$(function () {
var p2 = { name: "李四", age: 22, sex: "女",address:{ provice:"浙江",city:"湖州"} };
var p3 = { name: "王五", age: 23, sex: "gay", height: "175cm",address:{city:"杭州"} };
var result=$.extend(false,{},p2, p3);
var tr = "<tr><td>" + result.name + "</td><td>" + result.age + "</td><td>" + result.sex + "</td><td>" + result.height + "</td><td>" + result.address.provice + "</td><td>" + result.address.city + "</td></tr>";
$('.table').append(tr);
});
结果如下:王五 23 gay 175cm undefined 杭州 -即p3集合的adress属性直接吧p2集合的adress属性覆盖掉了。
Jquery $.extend的重载方法详述的更多相关文章
- c#反射重载方法(发现不明确的匹配)
GetMethod(string name) 在反射重载方法时,如果调用此重载方法,会产生 发现不明确的匹配 的错误. 解决方案如下: GetMethod("MethodName" ...
- php魔术方法——属性重载方法
php有一类很神奇的方法,这些方法是保留方法,通常不会在外部被显式调用,他们使用双下划线(__)开头,他们被称为魔术方法(Magic Methods).php官方也不建议定义其他双下划线开头的方法. ...
- FirstOrDefault()的重载方法
FirstOrDefault方法的使用总结: 现有一集合对象list, 其中集合对象调用FirstOrDefault()方法, list.FirstOrDefault()返回集合中第一个元素, 若集合 ...
- Parallel.For 你可能忽视的一个非常实用的重载方法
说起Parallel.For大家都不会陌生,很简单,不就是一个提供并行功能的for循环吗? 或许大家平时使用到的差不多就是其中最简单的那个重载方法,而真实情况 下Parallel.For里面有14个重 ...
- 为什么Java不能以返回值区分重载方法?
读者可能会想:"在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?" 比如下面两个方法,虽然他们有相同的名字和形式参数,但却很容易区 ...
- 【转】Python3 操作符重载方法
Python3 操作符重载方法 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/70769628 以下代码 ...
- Activity 重载方法 onStart和onResume、onPause和onStop的区别
Activity 重载方法 onStart和onResume.onPause和onStop的区别 首先了解Activity的四种状态 Running状态:一个新的Activity启动入栈后,它在屏幕最 ...
- jedis set 的四个重载方法(byte[]的四个自动忽略)
方法定义如下: 1.String set(String key, String value) 2.String set(String key, String value, String nxxx) 3 ...
- Java如何使用重载方法处理异常?
在Java编程中,如何使用重载方法处理异常? 此示例显示如何使用重载方法来处理异常.需要在每个方法中使用try catch块. package com.yiibai; public class Exc ...
随机推荐
- 有关文件夹与文件的查找,删除等功能 在 os 模块中实现
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...
- linux 磁盘空间扩容 vg(+pv) lv(+空间) lv(缩减磁盘空间)
preFace APP scenario description: 当你未能合理的规划存储时,在后期的维护工作中可能会涉及的存储的 再规划(eg,某一个 or 数个App 对某一个lv 即挂载点写Bi ...
- mongodb的 或 查询,实践总结
PostcardRecord.findOne({user:userid, $or : [ { at:{$gte:start.valueOf(), $lte:end.valueOf()} } , { i ...
- [置顶] How to compile openjdk 7 in RHEL5
1. 为什么要编译openjdk的code? 因为从Eclipse调试JDK的代码时,方法中的局部变量不能显示,这样是因为编译JDK时,没有编译成debug版本. 2. RHEL5中自带的开发者JDK ...
- 1503171912-ny-一道水题
一道水题 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 今天LZQ在玩一种小游戏,可是这游戏数有一点点的大,他一个人玩的累.想多拉一些人进来帮帮他.你能写一个程序帮 ...
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...
- winfrom播放动态图片
winfrom是不能直接加载的动态图片的.只能够自己写方法实现. 具体代码如下: using System; using System.Collections.Generic; using Syste ...
- Ajax或JS动态添加的元素,Jquery效果不起作用
问题: 最近在做一个Ajax分页的功能,遇到一个问题 一开始jquery效果是可用的,但是,ajax执行一次之后,jquery效果就无效了. 解决办法: 可以添加live事件来解决 W3C关于live ...
- Spark源码学习1
转自:http://www.cnblogs.com/hseagle/p/3664933.html 一.基本概念(Basic Concepts) RDD - resillient distributed ...
- windows下nginx+tomcat分布式集群部署
首先官网下载 http://nginx.org/en/download.html,我的本地环境为 实现的架构: 从图上可以看出,nginx作为负载均衡请求分发器,当请求A应用时候,分发到A集群,同理 ...