美文网首页
JS 实现值复制

JS 实现值复制

作者: 元气满满321 | 来源:发表于2017-06-19 17:54 被阅读295次

题目要求

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

代码

    function clone(data){
        if(Array.isArray(data)){
           //引用数据类型:Array
            let newArr = [];
            for(let i in arr){
                newArr[i] = clone(data[i]);
            }
            return newArr;
        }else if(data instanceof Object) {
           //引用数据类型:Object
            let newObj = {};
            for(let key in data){
                newObj[key] = clone(data[key]);
            }
            return newObj;
          
        }else{
            //基础数据类型
            return data;
        }
    
    }
   

代码分为三种情况

1.Object的复制“
//复制对象obj
const obj = {name: 'yujuan',hobbies:{outgoing:"play",indoor:"sing"}};
2.Array的复制:
//复制数组arr
const arr = [1,2,3,4];
这两种情况中为什么要递归调用clone()函数呢,是为了避免直接复制引用,举个例子

let obj1 = new Object();
let obj2 = obj1;
obj1.name = "Mary";
alert(obj2.name);//"Mary"

首先,obj1保存了对象的一个新实例,然后这个值被复制到obj2中,那么此时obj2就和obj1指向堆内存的同一个对象


所以我们不能直接复制引用,而是应该新建一个空对象,然后将值复制给空对象,切记不是复制引用。

3.基础数据类型比如Number、String、Boolean的复制,这个最简单,直接返回就好

有不懂的地方欢迎留言~

每天都努力一点点
谢谢你看完


相关文章

  • JS 实现值复制

    题目要求 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String...

  • js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)

    在js中,我们经常复制一个对象,复制数据,那么就会有人问了,怎么复制,今天鹏哥就带来js中的复制方法。 JS中对象...

  • 净现值NPV

    净现值NPV 1、工具概述 NPV(Net Present Value净现值)等于累计收益的现值减去累积成本的现值...

  • html点击复制table内容

    复制按钮 js 表格数据

  • 点击复制

    法一:复制内容写在input里 html: js: 法二:复制内容写在是span里 html: js: 法三:兼容...

  • 现值

    最近看了一本由弗兰克帕特诺伊所著的诚信的背后,其中提到的现值让我莫名的好感。现值就是今天的1美元与明天的一美元相比...

  • h5复制粘贴

    html 要复制的内容 复制按钮 js var copy=function(){ if (wb.ua....

  • 终值和现值计算

    知识点:终值和现值计算等额支付系列现金流量的终值、现值计算 终值和现值计算 【结论1】现值系数与终值系数互为倒数。...

  • JavaScript 解决微信网页中IOS/安卓 复制文字问题

    html代码 XXXXX 点击复制网址 上JS代码//点击复制文字function copyText() {i...

  • 固定资产成本

    现金流出的总现值固定资产平均年成本,未来使用年限内现金流出总现值与年金现值系数的比值。如果不考虑年金现值系数(固定...

网友评论

      本文标题:JS 实现值复制

      本文链接:https://www.haomeiwen.com/subject/dkfnqxtx.html