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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
Jquery.addClass始终无效原因分析
Sep 08 Javascript
Jquery 的outerHeight方法使用介绍
Sep 11 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
js检测浏览器版本、核心、是否移动端示例
Apr 24 Javascript
jquery text()方法取标签中的文本
Jul 25 Javascript
JavaScript跨平台的开源框架NativeScript
Mar 24 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
使用vuex缓存数据并优化自己的vuex-cache
May 30 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 Javascript
如何实现iframe父子传参通信
Feb 05 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
PHP中each与list用法分析
2016/01/08 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python实现的Iou与Giou代码
2020/01/18 Python
python 实现汉诺塔游戏
2020/11/28 Python
印度首选时尚目的地:Reliance Trends
2018/01/17 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
同事打架检讨书
2014/02/04 职场文书
创先争优活动方案
2014/02/12 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
介绍信的写法
2015/01/31 职场文书
导游词范文
2015/02/13 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server