gpt4 book ai didi

javascript - 是 Object.create() 方法执行浅拷贝?

转载 作者:行者123 更新时间:2023-11-30 06:21:13 25 4
gpt4 key购买 nike

我是 JavaScript 新手。当我阅读 Object.create 文档时,它被写成“Object.create() 方法使用现有对象创建一个新对象”(引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create)。它没有提及有关对象的浅拷贝的任何内容。但是当我试验下面的脚本时,我确认 create 方法正在执行浅拷贝。

var foo = {
a : 100,
details : {
version : 1.1,
name : 'Demo of object inheritance'
},

printInfo : function(){
console.log(this.details.version);
console.log(this.details.name);
console.log(this.a);
}

}

var bar = Object.create(foo);

foo.printInfo();
bar.printInfo();

console.log("\n Updating the details and property a of bar object");

bar.details.version = 2.2;
bar.details.name = "Bar object changed the name";
bar.a = 123456;

console.log("\n")
foo.printInfo();
bar.printInfo();

我的理解对吗?请指出任何确认 create() 方法执行浅拷贝的文档。

当我在 Scratchpad 中执行时,我在控制台中看到了以下输出。

1.1
Demo of object inheritance
100
1.1
Demo of object inheritance
100

Updating the details and property a of bar object Scratchpad/1:21:1


2.2
Bar object changed the name
100
2.2
Bar object changed the name
123456

最佳答案

Object.Create 根本不复制任何东西,它只是设置传递的对象作为新对象的原型(prototype):

const person = {name: 'Alex', age: 29}
const newPerson = Object.create(person)

console.log(newPerson)

enter image description here

为了进行浅拷贝,可以使用Object.assign

const newPersonObj = Object.assign({}, person)
console.log(newPersonObj)

这将创建全新的副本。 enter image description here

关于javascript - 是 Object.create() 方法执行浅拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941722/

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