首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dog.prototype = Object.create(Animal.prototype)和Dog.prototype = {...Animal.prototype}的结果有什么不同?

Dog.prototype = Object.create(Animal.prototype)和Dog.prototype = {...Animal.prototype}的结果有什么不同?
EN

Stack Overflow用户
提问于 2022-06-22 08:57:20
回答 3查看 35关注 0票数 -1

Dog.prototype = Object.create(Animal.prototype)Dog.prototype = {...Animal.prototype}的结果有什么不同?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-22 09:02:51

有几个不同之处,包括:

  • {...Animal.prototype}将创建一个独立的原型,它可以过自己的生活,而不知道可能会给Animal.prototype

带来的财产转让。

  • {...Animal.prototype}只复制可枚举的属性,而且某些方法可能不会复制,因此您将忽略它们。
票数 1
EN

Stack Overflow用户

发布于 2022-06-22 09:01:24

在表面上,一个只是复制属性,另一个基本上是创建Animal的新副本。

析构副本还复制源对象中的所有引用,因此Dog上的更改可能会影响Animal,这可能不是您想要的。

票数 2
EN

Stack Overflow用户

发布于 2022-06-22 09:00:13

如果您创建了一个新对象(使用扩展运算符的浅复制能力),那么对原始对象的更改将不会应用于新对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72712484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档