猿问

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

    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,为什么下一行就报错了?

慕哥9229398
浏览 600回答 3
3回答

呼如林

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

眼眸繁星

把 f3 赋值成 {}

慕慕森

首先要赋值 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)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答