# JavaScript-3:JS需要模拟类吗?
(题图:梵高-高更的椅子)
JavaScript 本身就是面向对象的,它并不需要模拟,只是它实现面向对象的方式和主流的流派不太一样,所以才会出现将JavaScript模拟类的操作。
从 ES6 开始,JavaScript 提供了 class
关键字来定义类,尽管,这样的方案仍然是基于原型运行时系统的模拟,但是它修正了之前的一些常见的“坑”,统一了社区的方案,这对语言的发展有着非常大的好处。
其实当初 Brendan 当年选择的原型系统,就是一个非常优秀的抽象对象的形式。
# JavaScript原型
可以用两条进行概括:
- 如果所有对象都有私有字段
[[prototype]]
,就是对象的原型;
- 读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。
ES6 以来,JavaScript 提供了一系列内置函数,以便更为直接地访问操纵原型。
三个方法分别为:
Object.create
根据指定的原型创建新对象,原型可以是 null;
Object.getPrototypeOf
获得一个对象的原型;
Object.setPrototypeOf
设置一个对象的原型。
后续补充,太难了。。。😭