jQuery中extend()实现原理
jQuery.extend使用的几种方式
1.jQuery.extend(源对象)
 jQuery源代码:
 if(length == i){
      target = this;
      --i;
 }
 示例1:
 var person = {
     sex      : 'male',
     showName : function(name){
             alert("Name: " + name);
     }
 };
 jQuery.extend(person); // 将person对象扩展到jQuery($)对象上
 jQuery.showName("admin"); // Name: admin
 $.showName("admin"); // Name: amdin
 alert("Sex: " + $.sex); // Sex: male
2.jQuery.extend(目标对象,源对象)
 var person = {
     language : ['java', 'c++', 'sql'],
     showName : function(name){
         alert("Name: " + name);
     }
 };
 var student = {
     showNum : function(num){
         alert("Num: " + num);
     }
 };
 jQuery.extend(student, person); // 将person对象扩展到指定的student对象上
 student.showName("admin");
 alert(student.language);
3.jQuery.extend(boolean,源对象)
 var person = {
     language : ['java', 'c++', 'sql'],
     showName : function(name){
         alert("Name: " + name);
     }
 };
 jQuery.extend(true, person); // 将person对象扩展jQuery对象上
 alert($.language); // java, c++, sql
 $.language.push('PL/SQL'); // 修改扩展后的对象
 alert(person.language); // java, c++, sql
 person.language.pop();
从上面例子中可以看出对$.language的修改不会影响到person中的language属性。这就是深度复制
4.jQuery.extend(boolean,目标对象,源对象)
 var person = {
     showName : function(name){
         alert("Name: " + name);
     }
 };
 var student = {
     language : ["java", "c++", "javascript"],
     showNum : function(num){
         alert("Num: " + num);
     }
 };
 var target = jQuery.extend(person, student);
 alert(target.language);     // java, c++, javascript
 target.language.push("PL/SQL");
 alert(student.language);    // java, c++, javascript, PL/SQL
 student.language.pop();
 alert(target.language);     // java, c++, javascript
 var target2 = jQuery.extend(true, person, student);
 alert(target2.language);    // java, c++, javascript
 target2.language.push("PL/SQL");
 alert(student.language);    // java, c++, javascript
 student.language.pop();
 alert(target2.language);    // java, c++, javascript, PL/SQL
转载自http://www.jb51.net/article/61478.htm
jQuery中extend()实现原理的更多相关文章
- 解析jQuery中extend方法--源码解析以及递归的过程《二》
		源码解析 在解析代码之前,首先要了解extend函数要解决什么问题,以及传入不同的参数,会达到怎样的效果.extend函数内部处理传入的不同参数,返回处理后的对象. extend函数用来扩展对象,增加 ... 
- jQuery中$.extend(true,object1, object2);深拷贝对象
		语法:jQuery.extend( [deep ], target, object1 [, objectN ] ) 深浅拷贝对应的参数就是[deep],是可选的,为true或false.默认情况是fa ... 
- 解读jQuery中extend函数
		$.extend.apply( null, [ true, { "a" : 1, "b" : 2 } ] );//console.log(window.a); ... 
- 解析jQuery中extend方法--用法《一》
		extend方法在jQuery中是一个很重要的方法,jQuey内部用它来扩展属性方法.常用语jQuery插件开发. jQuery提供了两个方法,$.extend和$.fn.extend,两个方法内部实 ... 
- jQuery中$.extend
		$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个 ... 
- jQuery中$.proxy()的原理和使用
		jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context )语境. jQuery.proxy( function, context ) fu ... 
- jQuery中 $.extend 和 $.fn.extend 作用及区别
		jQuery为开发插件提拱了两个方法,分别是: 1. jQuery.fn.extend(); 2. jQuery.extend(); 虽然 javascript没有明确的类的概念,但是可以构建类似类的 ... 
- 夜晚 暴力  十点钟  jQuery 的 extend 实现 原理
		jQuery 的 extend 是怎么实现的 一看代码 喉咙 就不爽 这是 jQuery JavaScript Library v1.6 一看代码 多的 屁股疼 , 排名 前三 的 文章 可以去参考下 ... 
- Jquery中extend使用技巧
		在使用Jquery开发的过程中,extend是常用的参数处理函数,特别是对默认值的使用. Jquery的扩展方法原型是: var v=$.extend(dest,src1,src2,[,src3... ... 
随机推荐
- 基于spring的web项目启动时预加载数据到ServletContext
			1.要在web启动时预加载数据到ServletContext,实现方法有很多,一种比较简单的方案就是: 1)新建一个bean,定义其初始化方法: <bean id="beanId&qu ... 
- tcpcopy真实流量压测工具
			https://quentinxxz.iteye.com/blog/2249799 http://blog.chinaunix.net/uid-25057421-id-5576741.html htt ... 
- java骰子求和算法
			//扔 n 个骰子,向上面的数字之和为 S.给定 Given n,请列出所有可能的 S 值及其相应的概率public class Solution { /** * @param n an intege ... 
- springboot项目线程使用2
			线程处理的一个实际例子: @Service public class SynAsynThreadTestServiceImpl implements SynAsynThreadTestService ... 
- PAT Rational Sum
			Rational Sum (20) 时间限制 1000 ms 内存限制 65536 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 Given N ration ... 
- hibernate建表默认为UTF-8编码
			一.问题: hibernate自动建表的编码应该是数据默认的编码格式,一般也不是utf-8.所以想要建表默认的编码是UTF-8,应该怎么做呢? 二.解决方法: 拿mysql举例: (一).修改hibe ... 
- 【LeetCode】最大子序列和
			要求时间复杂度 O(n). e.g. 给定数组 [-2,1,-3,4,-1,2,1,-5,4],其中有连续子序列 [4,-1,2,1] 和最大为 6. 我完全没有想法,看了答案. C++实现: int ... 
- 【LeetCode】矩阵操作
			1. 矩阵旋转 将 n × n 矩阵顺时针旋转 90°. 我的思路是 “ 从外到内一层一层旋转 ”. 一个 n × n 矩阵有 (n + 1) / 2 层,每层有 4 部分,将这 4 部分旋转. 顺时 ... 
- docker 安装nginx、php-fpm
			运行环境: 创建目录: mkdir -p /Users/sui/docker/nginx/conf.d && mkdir /Users/sui/www && cd /U ... 
- 你还有没有印象?腾讯QQ16个版本界面你认识多少?
			腾讯公司成立于1998年11月11日(马化腾也曾经戏称“腾讯公司的生日被马云弄成双11购物节了”).1997年,马化腾接触到了ICQ:1998年11月11日,马化腾和同学张志东在广东省深圳市注册成立“ ... 
