JS多继承

本文深入探讨了JavaScript中对象的浅复制与深复制方法,并通过具体示例展示了如何使用递归函数实现深复制,同时对比了ES5与ES6中不同复制技术的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ES5

    //1, 单个对象的浅复制
    function extend(target,source) {
        for(var key in source){
            target[key]=source[key];
        }
        return target;
    }
    //2, 多个对象浅复制
    var mutiExtend=function () {
        //第一个参数为target, 其他都为source
        var i=1;
        var len=arguments.length;
        var target=arguments[0];
        for(;i<len;i++){
            var source=arguments[i];
            extend(target,source);
        }
    }
    //3, 单个对象深复制
    function deepExtend(target,source) {
        for(var key in source){
            if(source[key] instanceof Object){
                if(source[key] instanceof Array){
                    target[key]=[];
                }else if(source[key] instanceof Function){
                    target[key]=function () {}
                }else{
                    target[key]={};
                }
                deepExtend(target[key],source[key]);
            }else{
                extend(target,source);
            }
        }
    }

    //4,测试单继承
     var target={"id":1};
    var source={
        name:"hyylsw",
        age:12,
        run:function () {
            console.log("run");
        },
        lovers:["mother","father","son","daughter"],
        books:{"java":["java1","java2"],"vue":["vue1","vue2","vue3"]}
    };

    deepExtend(target,source);
    source["lovers"]="me";
    source["books"]["java"][0]='java3';
    console.log(target);

    //5, 对对象的深复制
    var mutiDeepExtend=function () {
        var i=1;
        var target=arguments[0];
        var len=arguments.length;
        for(;i<len;i++){
            var source=arguments[i];
            deepExtend(target,source);
        }
    }

ES6

//Object.assign(target,source); 浅拷贝

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值