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 相关文章推荐
拖动table标题实现改变td的大小(css+js代码)
Apr 16 Javascript
js跳转页面方法总结
Jan 29 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
AngularJS 指令的交互详解及实例代码
Sep 14 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
深入理解vue $refs的基本用法
Jul 13 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
Sep 18 Javascript
JavaScript实现单点登录的示例
Sep 23 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
使用无限生命期Session的方法
2006/10/09 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
由Javascript实现的页面日历
2011/11/04 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
JavaScript中cookie工具函数封装的示例代码
2016/10/11 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
关于tf.nn.dynamic_rnn返回值详解
2020/01/20 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
师范教师毕业鉴定
2014/01/13 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书