- 对象直接量也会隐式的调用 Object 来构造实例。
- 默认的情况下,空的对象只有预设的属性与方法。
- 对象并没有原型,而是构造器有原型。对象只有“构造自某个原型”的问题,并不存在“持有某个原型”的问题。
- JS原型复制:使用写复制,并把复制的粒度从原型细化到成员。
- JS成员列表:
- 保证在读取时首先被访问到。
- 如果在对象中没有指定属性,则尝试遍历原型链。
- 存取实例中的属性,效率比存取原型的高。
- 修改原型是 JS 中最常用的构建对象系统的方法。好处是可以在实例创建之后动态的影响这些实例。
-
‘name' in obj
in 方法会检查原型链。 -
原型继承
与原型修改
:前者关注继承对象的层次,后者关注具体对象实例的行为的修改。
- 设计观念:将对象(类)的继承关系,与对象(类)的行为分离。这与
基于类继承的对象
存在本质的不同。 - 原型修改是动态语言的特性。
- 原型继承的本质 从无到有:
- 设计观念:将对象的继承关系与对象的行为分离。理论上我们可以先构建一个没有任何成员的类关系的继承系统,然后通过不断的修改原型,从而获得一个完整的系统。
- 继承来的原型成员:
子类从父类继承对象性质时,也会继承成员的可读写性与可见行
- JS 不同的引擎对这句话有不同解释: 一种是继承成员的名字(即维护一个
成员名
列表,成员名
具有特殊性质)。一种是继承成员的性质,成员可以被实例覆盖。