jquery extexd作为对象的拷贝

一、什么是extend?

    jQuery用于将一个或多个参数的内容合并到目标对象。 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

    语法:

    

二、为什么要使用extend?

    这就要说到赋值(=)与拷贝的区别。

用等于的话:var object1= object2; 当改变object1对象的时候 object2的对象会随之改变,因为它们的引用指向的是同一个内存地址。而我需要的是object对象的改变不影响object2,所以采用$.extend()拷贝的方法。这种方式相当于在内存又开辟了个新空间,object1与object2的引用指向的内存地址是不相同的。

三、如何使用?

   如上文语法所述,extend有两种用法。

1、$.extend( target [, object1 ] [, objectN ] )

这种写法相当于把多个object对象合并到target中。举例下:

执行的结果是:{"apple":{"price":300},"durian":150}

这种写法相当于: object1 = $.extend({}, object2);  两个写法的效果一样。

2.$.extend( [deep ], target, object1 [, objectN ] )

那这个deep有啥子作用?如下图

警告: 不支持第一个参数传递 false 。

deep为false的时候和$.extend( target [, object1 ] [, objectN ] )的作用是不同的。举例下:

    2.1、 deep为空输出object1

   2.2、deep为false,输出object1(官方文档不支持的写法)

2.3、deep为true,输出object1

注意到2.2 和2.3的remark属性,如果deep是true的时候,执行的是深拷贝,会把remark里面的不同属性值也都拷贝进来。比如这里就把 weight也给拷贝进来了,而原来的place则被覆盖,color得以保留。如果deep是false的时候,执行的结果明显有问题,建议不适用该方式。再看2.1:deep不写的情况,object2的remark会直接覆盖object1的remark而不在意remark属性里面的属性是否相同或不同。

 

注:看别的博文还有另一种的使用方式,由于没接触到,所以不写了 以免误导。方式如下图:

 

参考资料:

https://www.cnblogs.com/eric-qin/p/5209486.html

http://www.runoob.com/jquery/misc-extend.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值