国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JS對象深度克隆實例分析

2024-05-06 16:35:55
字體:
來源:轉載
供稿:網友

本文實例講述了JS對象深度克隆。分享給大家供大家參考,具體如下:

首先看一個例子:

var student = {  name:"yxz",  age:25}var newStudent = student;newStudent.sex = "male";console.log(student); //{name:"yxz",age:25,sex:"male"}

由此可見,將一個對象通過簡單的傳遞賦值傳遞給一個新的變量時,僅僅是給該對象增添了一個別名。所以,對該別名的操作也會作用到原對象上去,所以通過newStudent.sex給對象student添加屬性可以實現。然而,更多的時候我們希望newStudent和student對象是獨立的,那么就需要生成一個原對象的副本,請看下面的例子:

var cloneObj = function(obj){  var str, newobj = obj.constructor === Array ? [] : {};  if(typeof obj !== 'object'){    return;  } else if(window.JSON){    str = JSON.stringify(obj), //序列化對象    newobj = JSON.parse(str); //還原  } else {    for(var i in obj){      newobj[i] = typeof obj[i] === 'object' ? cloneObj(obj[i]) : obj[i];     }  }  return newobj;};//測試var student = {  name:"yxz",  age:25,  sex:"male"};//執行深度克隆var newStudent = cloneObj(student);delete newStudent.sex;console.log(newStudent); //{name:"yxz",age:25}console.log(student); //{name:"yxz",age:25,sex:"male"}

通過執行結果可以看出newStudent已經成為了一個克隆出來的副本,對newStudent的任何操作將不再影響student對象。

備注:JSON.stringify和parse分別為JSON對象的序列化和反序列化函數,即分別負責將對象序列化成字符串和將json字符串反序列化成對象,因為這個是屬于ECMAscript5規范,所以上面程序標注部分做了一個兼容處理。

 

希望本文所述對大家Javascript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦煌市| 宁强县| 武义县| 德江县| 岳池县| 汉寿县| 法库县| 东山县| 辰溪县| 凤庆县| 梁河县| 酉阳| 富宁县| 高台县| 襄垣县| 鄱阳县| 南昌县| 岱山县| 阜康市| 陇川县| 调兵山市| 漾濞| 临汾市| 贵定县| 浦城县| 百色市| 原平市| 璧山县| 文山县| 东源县| 宜川县| 遵义县| 哈密市| 深泽县| 山西省| 平谷区| 双牌县| 揭西县| 怀集县| 凤翔县| 朝阳区|