JS对象属性继承

时间:2017-04-17 13:18:09

标签: javascript ecmascript-6

我无法理解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/

我的期望:

  1. name成为' foo'和' bar'分别
  2. stats的{​​{1}}保持不变,但为Foo
  3. 增加一个属性

    为什么#1是真的,但#2不是?对于属性(或显然是数组)与原始属性的属性有什么特别之处?

1 个答案:

答案 0 :(得分:0)

FooBar是两个独立的函数对象。这些函数本身没有继承关系。在这方面,持有物体的财产没有什么特别之处。对于原语,您为两个函数对象提供了自己的值。对于该对象,您只将对象放在Foo上,因此即使存在这种关系,它也不会存在于Bar上,如果您更改Bar上的对象从Foo可以看到更改,因为您仍在改变同一个对象

通过评论中的@squint