国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮南市| 鹿泉市| 商南县| 晋州市| 连城县| 会宁县| 三河市| 石林| 天长市| 齐齐哈尔市| 南雄市| 古蔺县| 福泉市| 阳泉市| 尚志市| 绥中县| 娱乐| 佛坪县| 阳东县| 同江市| 禄劝| 夏津县| 石家庄市| 巴里| 巩留县| 竹山县| 科技| 寻甸| 夏河县| 和林格尔县| 三江| 泾川县| 定结县| 杂多县| 四会市| 苏尼特右旗| 大竹县| 新巴尔虎右旗| 开远市| 山东| 饶河县|