jQuery extend 的简单实例


Posted in Javascript onSeptember 18, 2013
jQuery.extend = jQuery.fn.extend = function() {
    var options, name, src, copy, copyIsArray, clone,
        target = arguments[0] || {},
        i = 1,
        length = arguments.length,
        deep = false;
    // Handle a deep copy situation
    if ( typeof target === "boolean" ) {
        deep = target;
        target = arguments[1] || {};
        // skip the boolean and the target
        i = 2;
    }
    // Handle case when target is a string or something (possible in deep copy)
    if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
        target = {};
    }
    // extend jQuery itself if only one argument is passed
    if ( length === i ) {
        target = this;
        --i;
    }
    for ( ; i < length; i++ ) {
        // Only deal with non-null/undefined values
        if ( (options = arguments[ i ]) != null ) {
            // Extend the base object
            for ( name in options ) {
                src = target[ name ];
                copy = options[ name ];
                // Prevent never-ending loop
                if ( target === copy ) {
                    continue;
                }
                // Recurse if we're merging plain objects or arrays
                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
                    if ( copyIsArray ) {
                        copyIsArray = false;
                        clone = src && jQuery.isArray(src) ? src : [];
                    } else {
                        clone = src && jQuery.isPlainObject(src) ? src : {};
                    }
                    // Never move original objects, clone them
                    target[ name ] = jQuery.extend( deep, clone, copy );
                // Don't bring in undefined values
                } else if ( copy !== undefined ) {
                    target[ name ] = copy;
                }
            }
        }
    }
    // Return the modified object
    return target;
};
Javascript 相关文章推荐
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
基于bootstrap页面渲染的问题解决方法
Aug 09 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
Mar 07 Javascript
JS实现扫雷项目总结
May 19 Javascript
Javascript中Event属性搜集整理
Sep 17 #Javascript
js获取html文件的思路及示例
Sep 17 #Javascript
JS的Document属性和方法小结
Sep 17 #Javascript
JS画5角星方法介绍
Sep 17 #Javascript
js带按钮的提示框可供选择示例代码
Sep 17 #Javascript
今天是星期几的4种JS代码写法
Sep 17 #Javascript
关于javascript event flow 的一个bug详解
Sep 17 #Javascript
You might like
德生9700DX电路分析
2021/03/02 无线电
PHP 创建标签云函数代码
2010/05/26 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python 监测文件是否更新的方法
2019/06/10 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
给物业的表扬信
2014/01/21 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
校本研修个人总结
2015/02/28 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL
bose降噪耳机音能消除人声吗
2022/04/19 数码科技