为了账号安全,请及时绑定邮箱和手机立即绑定

用for...in和hasOwnproperty克隆对象,可是报错克隆对象的属性不能为空

用for...in和hasOwnproperty克隆对象,可是报错克隆对象的属性不能为空

慕哥9229398 2019-03-13 13:15:14
    function Fn() {        this.x=100;        this.y=200;        this.getY=function(){            console.log(this.y);                    }    }    var f1=new Fn;    var f3=null;    cloneObj(f3,f1);    console.log(f3);        function cloneObj(obj1,obj2) {        for (var key in obj2) {            if (obj2.hasOwnProperty(key)) {                console.log(obj2[key]);     //100                obj1[key]=obj2[key];        //Cannot set property 'x' of null            }        }        return obj1;    }实在是不懂....打印的时候明明obj2[x]===100,为什么下一行就报错了?
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

f3 是 null 啊 也就是 obj1是null
null['x'] = obj2['x'] 是什么鬼

查看完整回答
反对 回复 2019-04-02
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

把 f3 赋值成 {}


查看完整回答
反对 回复 2019-04-02
?
慕慕森

TA贡献1856条经验 获得超17个赞

首先要赋值 f3 = {},

其次可以更简单的clone:


function Fn() {

    this.x=100;

    this.y=200;

    this.getY=function(){

        console.log(this.y);

        

    }

}

var f1=new Fn;

var f3={};

Object.assign(f3,f1)


查看完整回答
反对 回复 2019-04-02
  • 3 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信