我无法理解JS类/对象属性继承的规则。假设示例:
class Foo {}
Foo.myName = 'foo'
Foo.stats = {
fooStat: 2
}
class Bar extends Foo {}
Bar.myName = 'bar';
Bar.stats.barStat = 55;
console.log(Foo.myName)
console.log(Bar.myName)
console.log(Foo.stats)
console.log(Bar.stats)

https://jsfiddle.net/gzjuo5u4/
我的期望:
name
成为' foo'和' bar'分别stats
的{{1}}保持不变,但为Foo
为什么#1是真的,但#2不是?对于属性(或显然是数组)与原始属性的属性有什么特别之处?
答案 0 :(得分:0)
Foo
和Bar
是两个独立的函数对象。这些函数本身没有继承关系。在这方面,持有物体的财产没有什么特别之处。对于原语,您为两个函数对象提供了自己的值。对于该对象,您只将对象放在Foo
上,因此即使存在这种关系,它也不会存在于Bar
上,如果您更改Bar
上的对象从Foo
可以看到更改,因为您仍在改变同一个对象
通过评论中的@squint