ECMAScript的面向对象
JavaScript 对象、原型、构造函数、class、继承的关系地图。
#type / synthesis
#status / growing
#resource / javascript
#resource / ecmascript
[!info] related notes
- 所属 MOC: ecmascript-moc, javascript-moc
- 原子概念: js对象, js原型和原型链, js构造函数, js-new, proto-prototype-constructor, js-class, js继承in-es6-es5, this-keyword
- 总结与纠偏: ecmascript-prototypes, ecmascript-object总结, 为什么说-js-是基于原型而不是基于类
ECMAScript的面向对象
这篇笔记只负责说明对象模型里的关系、阅读顺序和高频混淆点,不再重复展开每个原子定义。
先抓住一句话
JavaScript 的对象系统底层是基于原型的,
class只是更现代的语法表达。
推荐阅读顺序
这组概念如何分工
起点:对象
- js对象 解释对象、属性访问、读写差异
共享与查找:原型
- js原型和原型链 解释属性如何沿原型链查找
- ecmascript-prototypes 作为原型主题的关系入口
批量创建:构造函数与 new
- js构造函数 解释为什么需要构造函数
- js-new 解释实例、
this、原型如何接线 - proto-prototype-constructor 单独拆清三个高频混淆名词
现代写法:class 与继承
- js-class 解释
class的语法层角色 - js继承in-es6-es5 对比 ES5 / ES6 的继承写法
最容易混淆的点
class看起来像类语言,不代表底层变成类系统prototype、__proto__、constructor处在不同位置- 读属性和写属性不是同一条规则
- 继承写法升级,不等于继承机制本质改变
相关跳转
- 对象模型速览:ecmascript-object总结
- 认知纠偏:为什么说-js-是基于原型而不是基于类