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

首頁 > 編程 > JavaScript > 正文

JS對象深度克隆實例分析

2019-11-19 17:07:59
字體:
來源:轉載
供稿:網友

本文實例講述了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面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 疏勒县| 高密市| 宜阳县| 呼和浩特市| 昆明市| 灵台县| 阿坝| 长宁区| 娱乐| 贵州省| 镇远县| 康马县| 塘沽区| 曲周县| 辉南县| 鄂伦春自治旗| 新安县| 临猗县| 平凉市| 获嘉县| 稷山县| 东方市| 明光市| 左权县| 织金县| 攀枝花市| 龙游县| 辰溪县| 九龙城区| 沁源县| 卓资县| 行唐县| 荥经县| 百色市| 富裕县| 天等县| 贺州市| 陆河县| 雷波县| 哈巴河县| 云林县|