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类中多重继承所带来的那种复杂性的牺牲品?不,它是单一继承链。