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

首頁 > 編程 > JavaScript > 正文

深入理解JavaScript中的對象復制(Object Clone)

2019-11-20 10:00:32
字體:
來源:轉載
供稿:網友

JavaScript中并沒有直接提供對象復制(Object Clone)的方法。因此下面的代碼中改變對象b的時候,也就改變了對象a。

a = {k1:1, k2:2, k3:3};

b = a;

b.k2 = 4;

如果只想改變b而保持a不變,就需要對對象a進行復制。

用jQuery進行對象復制

在可以使用jQuery的情況下,jQuery自帶的extend方法可以用來實現對象的復制。

a = {k1:1, k2:2, k3:3};

b = {};

$.extend(b,a);

自定義clone()方法來實現對象復制

下面的方法,是對象復制的基本想法。

Object.prototype.clone = function() { var copy = (this instanceof Array) ? [] : {}; for (attr in this) {  if (!obj.hasOwnProperty(attr)) continue;  copy[attr] = (typeof this[i] == "object")?obj[attr].clone():obj[attr]; }  return copy;};a = {k1:1, k2:2, k3:3};b = a.clone();

下面的例子則考慮的更全面些,適用于大部分對象的深度復制(Deep Copy)。

function clone(obj) {  // Handle the 3 simple types, and null or undefined  if (null == obj || "object" != typeof obj) return obj;  // Handle Date  if (obj instanceof Date) {    var copy = new Date();    copy.setTime(obj.getTime());    return copy;  }  // Handle Array  if (obj instanceof Array) {    var copy = [];    for (var i = 0, var len = obj.length; i < len; ++i) {      copy[i] = clone(obj[i]);    }    return copy;  }  // Handle Object  if (obj instanceof Object) {    var copy = {};    for (var attr in obj) {      if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);    }    return copy;  }  throw new Error("Unable to copy obj! Its type isn't supported.");}

以上這篇深入理解JavaScript中的對象復制(Object Clone)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泸州市| 陈巴尔虎旗| 鹤峰县| 祁阳县| 浦县| 眉山市| 罗城| 巍山| 涿州市| 广水市| 大埔县| 溧水县| 广安市| 庆元县| 翼城县| 平邑县| 桂阳县| 大关县| 阿克苏市| 沁源县| 临西县| 安宁市| 西林县| 桦川县| 长沙市| 杂多县| 信阳市| 苗栗市| 广宗县| 新安县| 长宁县| 渑池县| 四子王旗| 南郑县| 高雄县| 湘潭市| 赫章县| 武乡县| 东至县| 永州市| 周口市|