標籤:style class blog code http tar
最近在用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