首页 > 代码库 > jQuery.extend方法和开发中变量的复用

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