Appearance
附录A ES6中的Class
可以用一句话总结本书的第二部分( 第 4 章至第 6 章):类是一种可选( 而不是必须)的 设计模式,而且在JavaScript这样的[[Prototype]]语言中实现类是很别扭的。
这种别扭的感觉不只是来源于语法, 虽然语法是很重要的原因。 第 4 章和第 5 章介绍了许 多语法的缺点: 繁琐杂乱的.prototype引用、 试图调用原型链上层同名函数时的显式伪多 态(参见第 4 章)以及不可靠、不美观而且容易被误解成“构造函数”的.constructor。
除此之外, 类设计其实还存在更深刻的问题。 第 4 章指出, 传统面向类的语言中父类和子 类、 子类和实例之间其实是复制操作, 但是在[[Prototype]]中并没有复制, 相反, 它们 之间只有委托关联。
对象关联代码和行为委托( 参见第 6 章)使用了[[Prototype]]而不是将它藏起来, 对比 其简洁性可以看出,类并不适用于JavaScript。
你不知道的 JavaScript