前端提高篇(104):jQuery拓展函数extend源码简读,前端开发手册

本文详细解析了jQuery的extend函数,包括深拷贝和浅拷贝的实现,以及如何处理复杂对象的合并。通过示例说明了extend在不同情况下的应用,并探讨了源码中处理容错和避免无限循环的机制,是前端开发者深入理解对象拷贝和jQuery扩展的宝贵资料。
摘要由CSDN通过智能技术生成

};

var obj2 = {

ccy1 : 19,

ccy2 : {

age : 20

}

}

// 案例1:拓展自定义对象,目标对象是obj1,原对象是obj2

$.extend( obj1, obj2);

// 案例2:深拷贝拓展自定义对象

$.extend( true, obj1, obj2);

// 案例3:拓展jQuery对象,目标对象是jQuery,原对象是obj1

$.extend(obj1);

// 案例4:深拷贝拓展jQuery对象

$.extend(true, obj1);

案例3和案例4执行后,均可以直接通过:$.ccy来调用该数据,返回18

不论是将obj2拓展到obj1里,还是将obj1拓展到jQuery中,我们都需考虑以下问题:

**1.是否深拷贝、哪一个是目标对象、从哪里开始到哪里结束是原对象;

2.如何深拷贝,

3.而且还要有一定的容错率**

源码很巧妙地解决了这些问题

首先看第一个问题:

在这里插入图片描述

开始

我们可以看到,一开始定义了很多变量,并赋予了默认值:

1.默认目标对象target是传入的第一个参数,索引0;

2.传入的参数从i=1开始,到 i=length位置都是原对象;

3.默认为浅拷贝,deep为false

这时,4个案例里,这些参数分别为:

在这里插入图片描述

对深浅拷贝的处理:

如果第一个参数的数据类型是布尔型,则该参数是设置深拷贝,将第一个参数的内容复制给deep变量,target则往后顺延,获得下一个索引(i++)的参数

这里做了一个容错处理,如果extend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值