# JavaScript-3:JS需要模拟类吗?


(题图:梵高-高更的椅子)


JavaScript 本身就是面向对象的,它并不需要模拟,只是它实现面向对象的方式和主流的流派不太一样,所以才会出现将JavaScript模拟类的操作。


从 ES6 开始,JavaScript 提供了 class关键字来定义类,尽管,这样的方案仍然是基于原型运行时系统的模拟,但是它修正了之前的一些常见的“坑”,统一了社区的方案,这对语言的发展有着非常大的好处。


其实当初 Brendan 当年选择的原型系统,就是一个非常优秀的抽象对象的形式。


# JavaScript原型


可以用两条进行概括:


  • 如果所有对象都有私有字段 [[prototype]],就是对象的原型;
  • 读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。


ES6 以来,JavaScript 提供了一系列内置函数,以便更为直接地访问操纵原型。


三个方法分别为:


  • Object.create 根据指定的原型创建新对象,原型可以是 null;
  • Object.getPrototypeOf 获得一个对象的原型;
  • Object.setPrototypeOf 设置一个对象的原型。

后续补充,太难了。。。😭