gpt4 book ai didi

javascript - object.create 不使用我的新值

转载 作者:行者123 更新时间:2023-12-02 16:22:40 25 4
gpt4 key购买 nike

我最近发现了 object.create 并且现在正在尝试理解它。但我没有让它使用我在 var person2 之后添加的新值。我的前三个功能运行良好。

   var person = {}

person.print1=function(){
this.firstName="Albert"
return "My name is "+this.firstName+"."
};

person.print2=function(){
this.lastName="Einstein";
this.nationality="Germany";
return "My name is "+this.firstName+" "+this.lastName+" from "+this.nationality+"."
}

person.born=new Date("1879,03,14");
person.print3=function(){
return person.print2()+' I was born '+person.born.getFullYear()+".";
}

这部分是我感到困惑和不确定如何使用Object.create

var person2 = Object.create(person);
person2.firstName="Isaac";
person2.lastName="Newton";
person2.nationality="England";
person2.born=new Date("1643-01-04");

我使用 person2.print3(); 打印我的详细信息。到目前为止我的理解是我不需要一个新函数来调用它?

我得到的结果是:“我的名字是阿尔伯特·爱因斯坦,来自德国。我出生于 1879 年。” 这与我从 var person 得到的结果相同

但应该是“我的名字是艾萨克·牛顿,来自英国。我出生于 1643 年。”

最佳答案

person2.print3 函数中,您正在访问 person.print2()。因此它将始终返回 person 对象 的值。将其更改为 this.print2() 以获取从中调用函数的对象的值。更改为 print2print3

person.print3=function(){   
return this.print2()+' I was born '+this.born.getFullYear()+".";
}

person.print2=function(){
//this.lastName="Einstein";
//this.nationality="Germany";
return "My name is "+this.firstName+" "+this.lastName+" from "+this.nationality+"."
}

关于javascript - object.create 不使用我的新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28960952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com