国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆德县| 洞口县| 台北市| 洪湖市| 通榆县| 和平区| 尼玛县| 海伦市| 汨罗市| 石首市| 班戈县| 随州市| 开阳县| 新邵县| 霍州市| 阿拉尔市| 长治县| 新沂市| 瓦房店市| 厦门市| 安塞县| 册亨县| 安龙县| 泸西县| 苍南县| 凤凰县| 军事| 定州市| 信丰县| 兖州市| 布拖县| 抚顺市| 承德市| 临海市| 衡水市| 屏东县| 牙克石市| 合江县| 绥阳县| 遂宁市| 姜堰市|