zoukankan      html  css  js  c++  java
  • JavaScript高级 面向对象(9)--深拷贝代码实现

    说明(2017.4.1):

    1. 深拷贝要把对象里的“方法”也复制一份出来,“方法”里的“方法和属性”再判断深浅进行拷贝。

    2. 办法就是写一个函数deepCopy,里面判断深浅拷贝,然后每个对象都添加这个deepCopy函数。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6 </head>
     7 <body>
     8 <script type="text/javascript">
     9     var car = {
    10         name: "法拉利",
    11     };
    12     var person = {
    13         name: "张三",
    14         age: 19,
    15         gender: "男",
    16         car: car,
    17     };
    18     // 写一个deepCopy函数,给car和person对象添加上(js对象的动态添加属性和方法),省的每个里面要写一遍
    19     var deepCopy = function(){
    20         var p = {};
    21         for(var k in this){
    22             if(typeof this[k] === "object"){
    23                 p[k] = this[k].deepCopy();
    24             }else{
    25                 p[k] = this[k];
    26             }
    27         }
    28         return p;
    29     }
    30     // 添加到car和person里,注意后面的deepCopy不要带括号,不然就是等于返回值了
    31     car.deepCopy = deepCopy;
    32     person.deepCopy = deepCopy;
    33     // 新建一个p1,深拷贝一下person,然后检测一下,修改p1的car.name是否会影响到person
    34     p1 = person.deepCopy();
    35     p1.car.name = "兰博基尼";
    36 
    37     console.log(p1);
    38     console.log(person);
    39 </script>
    40 </body>
    41 </html>
  • 相关阅读:
    java代码块执行顺序
    Oracle-SQL高级查询
    java单例模式
    Oracle序列和伪表
    Oracle函数
    Oracle存储过程
    Oracle触发器
    Oracle分析函数
    Oracle分页查询
    Oracle联合查询
  • 原文地址:https://www.cnblogs.com/Jacklovely/p/6657073.html
Copyright © 2011-2022 走看看