gpt4 book ai didi

javascript - Python 字典组合和 JS 原型(prototype)继承之间的实际区别

转载 作者:行者123 更新时间:2023-11-28 18:04:39 35 4
gpt4 key购买 nike

下面每个代码段中的 combo 之间有什么实际区别吗?

Python 3.5+:

foo = {'name': 'foo', 'one': 1, 'two': 2}
bar = {'two': "two", 'three': 3}

bar = {**foo, **bar}

combo = bar


JS(ECMAScript 2015):

var foo = {name: "foo", one: 1, two: 2};
var bar = {two: "two", three: 3};

Object.setPrototypeOf(bar, foo);

var combo = bar;

最佳答案

Python 代码只是将原始字典中的元素复制到新字典中。从 combo 字典到原始 foobar 字典没有链接。如果在上述代码之后对 foo 进行更改,则对 barcombo 没有影响。

Javascript代码不会复制对象属性,而是将foo设置为barcombo的原型(prototype)。当您尝试访问不存在的属性时,它会搜索原型(prototype)链。如果您更改 foo,该更改也会影响 barcombo

var foo = {name: "foo", one: 1, two: 2};
var bar = {two: "two", three: 3};

Object.setPrototypeOf(bar, foo);

var combo = bar;

foo.x = 100;
console.log(combo.x);

与 Python 代码等效的 Javascript 代码是:

var bar = Object.assign({}, bar, foo);
var combo = bar;

关于javascript - Python 字典组合和 JS 原型(prototype)继承之间的实际区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42911954/

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