oldObj是一個對象,而不是值
例如var newObj=oldObj;
如果想oldObj改變的時候不影響到newObj;
可以這樣寫一個函數
複製代碼 代碼如下:
function clone(myObj){
if(typeof(myObj) != 'object') return myObj;
if(myObj == null) return myObj;
var myNewObj = new Object();
for(var i in myObj)
myNewObj[i] = clone(myObj[i]);
return myNewObj;
}
然後這樣調用
newObj=clone(oldObj)
之後,oldObj的值無論怎麼改變都不會影響newObj
JavaScript複製對象
文法:
oElement = object . cloneNode ( bCloneChildren )
參數:
bCloneChildren : 可選項。布爾值(Boolean)。false | true
false : 預設值。複製 object 時不包括 object 的 childNodes 集合。即其所有子物件。
true : 複製 object 時包括 object 的 childNodes 集合。即其所有子物件。
傳回值:
oElement : 對象(Element)。返回複製後的新對象的引用。
說明:
在文檔結構中複製 object 。
複製後,擷取複製對象的 id 時,將返回一個集合。
在運行時使用此方法是可以的。在對象的關閉標籤被解析前,文檔空間可能不能被呈遞。
範例程式碼:
複製代碼 代碼如下:
<script>
function rdl_fnClone(){
var oCloneNode=oList.cloneNode(true);
cloneArea.appendChild(oCloneNode);
}
</script>
<table width=98%><tr><td>
<ul id=oList>
<li>第1個清單項目
<li>第2個<a href="#" onclick="return false;">清單項目</a>
<li style="font-weight:bold;">第3個清單項目
</ul>
</td><td id=cloneArea>
</td></tr></table>
<input type=button value=" 複製 " onclick= "rdl_fnClone();">