Javascript 在指定物件為變數時是傳「reference」,若不知道這個特性很容易搞不清楚你的值為啥被改掉了,jQuery的extend函式可以做deep Clone,也就是遞迴將物件裡頭的任一成員都做clone,但針對array好像有點問題,因此我寫了一支小function來呼叫,以後要做cloneObject時可以直接服用。
[sourcecode language=”javascript”]
/
cloneObject 會完整clone一個全新的Object
若傳入的object是array, 則會回傳array
/
(function($) {
$.extend($, {
cloneObject : function(obj){
var newObj;
if($.isArray(obj)){
newObj = [];
for(var i=0; i<obj.length; i++){
newObj.push(arguments.callee(obj[i]));
}
return newObj;
}else{
newObj = {};
return $.extend(true, newObj, obj);
}
}
});
})(jQuery)
[/sourcecode]