jQuery.extend方法和开发中变量的复用

最近在用commonJS规范进行客户端开发,遇到如下问题:

一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义

var settings = {
        //设置它是否绝对定位
        position: {
            //定位可以是绝对定位,可以是相对定位(需要有target),也可以是默认定位
            type: "none",
            top: 30,
            left: 30,
            //表示相对于目标的定位
            target: "",
            zindex: 0
        },
        //单击选择颜色结束是否关闭
        isClose: true,
        //表示颜色块单击(返回一个数组,表示选中的颜色和隐藏颜色)
        onClick: function (colors) {

        },
        onClose: function () {

        }
    };

这些参数不经内部用到,而且需要提供调用初始化。你的实现代码可能是这样:

//修改默认配置
    var setup = function (_settings) {
        if (_settings) {
            if (_settings.onClick && $.isFunction(_settings.onClick)) {
                settings.onClick = _settings.onClick;
            }
            if (_settings.position) {
                if (_settings.position.type)
                    settings.position.type = _settings.position.type;
                if (_settings.position.top)
                    settings.position.top = _settings.position.top;
                if (_settings.position.left)
                    settings.position.left = _settings.position.left;
                if (_settings.position.target)
                    settings.position.target = _settings.position.target;
                if (_settings.position.zindex)
                    settings.position.zindex = _settings.position.zindex;
            }
            if (_settings.isClose) {
                settings.isClose = _settings.isClose;
            }
        }
    };

但事实上我们可以利用jQuery的extend方法大大简化代码

以上代码可以简化为

//修改默认配置
    var setup = function (_settings) {
       $.extend(settings, _settings || {});//浅复制
    $.extend(true,settiings,_settings||{}); };

具体jQuery.extend用法可以参考

http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html

jQuery.extend方法和开发中变量的复用,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。