Javascript Python-dict组合与JS原型继承的实际区别

Javascript Python-dict组合与JS原型继承的实际区别,javascript,python,dictionary,prototype,Javascript,Python,Dictionary,Prototype,下面每个片段中的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}; Obje

下面每个片段中的
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代码只是将元素从原始字典复制到新字典中。没有从
组合
字典到原始
foo
bar
字典的链接。如果在上述代码之后对
foo
进行更改,则对
bar
combo
没有影响

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

var foo={name:“foo”,一:1,二:2};
var-bar={2:2',3:3};
setPrototypeOf(bar,foo);
var组合=条;
foo.x=100;

console.log(combo.x)Python代码只是将元素从原始字典复制到新字典中。没有从
组合
字典到原始
foo
bar
字典的链接。如果在上述代码之后对
foo
进行更改,则对
bar
combo
没有影响

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

var foo={name:“foo”,一:1,二:2};
var-bar={2:2',3:3};
setPrototypeOf(bar,foo);
var组合=条;
foo.x=100;

console.log(combo.x)啊!知道了。试着让我的头绕过原型链。我还不知道我会喜欢还是讨厌它。Python中最密切相关的概念是类和子类。是的,我刚刚意识到这一点。原型链是否允许您沦为Python类中多重继承所带来的那种复杂性的牺牲品?不,它是一个单一继承链。啊!知道了。试着让我的头绕过原型链。我还不知道我会喜欢还是讨厌它。Python中最密切相关的概念是类和子类。是的,我刚刚意识到这一点。原型链是否允许您沦为Python类中多重继承所带来的那种复杂性的牺牲品?不,它是单一继承链。