分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

jQuery.extend()

发布时间:2023-09-06 02:04责任编辑:彭小芳关键词:jQuery

使用jquery的$.extend()之前突然想到如何查看jquery的版本

$.fn.jquery

转入正题,在没有研究jquery源码之前,都不知道这个方法的使用,接触过后感觉这东西还可以,在此做个note

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

注意:

1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

定义和用法

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

指示是否深度合并

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

deep :可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。

target : Object类型 目标对象,其他对象的成员属性将被附加到该对象上。

object1:可选。 Object类型 第一个被合并的对象

objectN:可选。 Object类型 第N个被合并的对象。

1.基本的用法:

1 var option1 = {2 ????max: 100,3 ????min: 204 }5 var option2 = {6 ????flag: true,7 ????disable: false8 }9 var objconfig = $.extend(option1, option2);

objconfig的值为合并后的对象 {max: 100, min: 20, flag: true, disable: false}

这种用法的缺点是什么呢?改变了option1 !!!

然后我们如果不需要改变option1可以把target设置为{},目标对象为新的{},而不是option1,到时option1将不会不改边,把option1和option2合并成一个对象

var option1 = { ???max: 100, ???min: 20}var option2 = { ???flag: true, ???disable: false}var objconfig = $.extend({}, option1, option2);

2.合并的对象之间含有重复的属性

var option1 = { ???max: 100, ???min: 20}var option2 = { ???flag: true, ???disable: false, ???min: 100}var objconfig = $.extend({}, option1, option2);

objconfig的值为{max: 100, min: 100, flag: true, disable: false}

也就是合并对象有重复的属性值时,后面的对象的相同属性值会覆盖前面的。

3.合并的对象含有子对象

var option1 = { ???max: 100, ???min: 20, ???user: { ???????name: ‘tony‘, ???????age: 18 ???}}var option2 = { ???flag: true, ???disable: false, ???min: 100, ???user: { ???????name: ‘anny‘, ???????job: ‘student‘ ???}}var objconfig = $.extend({}, option1, option2);

看如下结果

后面的user覆盖了前面的user

这个时候就涉及到深拷贝了,需要把第一个参数deep设置为true

var objconfig = $.extend(true, {}, option1, option2);

深拷贝对象的子对象的属性也合并拷贝了,但是子对象的属性值依然是后面的覆盖前面的

4.此方法可以给jquery添加新的函数

$.extend( ???{ ???????min: function(a, b) { return a < b ? a : b; }, ???????max: function(a, b) { return a > b ? a : b; } ???})console.log($.min(3,5))console.log($.max(5,3))

当extend的对象只有一个时默认是给jquery扩展的,也就是那个对象的属性被附加到jquery身上。

jQuery.extend()

原文地址:https://www.cnblogs.com/freezyh/p/9313658.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved