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 相关文章推荐
js 绑定带参数的事件以及手动触发事件
Apr 27 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
web网页按比例显示图片实现原理及js代码
Aug 09 Javascript
js 一个关于图片onload加载的事
Nov 10 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
ES6函数和数组用法实例分析
May 23 Javascript
从0搭建vue-cli4脚手架
Jun 17 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原理之变量(Variables inside PHP)
2013/08/09 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
python语言是免费还是收费的?
2020/06/15 Python
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
SQL Server面试题
2016/10/17 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
期中考试后的反思
2014/02/08 职场文书
食品采购员岗位职责
2014/04/14 职场文书
代理人委托书
2014/09/16 职场文书
防火标语大全
2014/10/06 职场文书
先进事迹材料范文
2014/12/29 职场文书
校本研修个人总结
2015/02/28 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
python解析json数据
2022/04/29 Python