知识卡片
原型链复用
内容
每个对象连接到一个原型对象并可从中继承属性;检索属性先查自身,找不到再沿原型链逐级查找直到 Object.prototype,都没有则返回 undefined,这称为委托。原型连接只影响检索不影响更新——赋值只会在对象自身创建/覆盖属性,不触及原型。正确使用原型链能减少初始化时间和内存。关联:[[对象是键控集合]];发散:共享行为放原型,实例状态留自身。
参考来源
- 位置:《JavaScript语言精粹(修订版)》第3章《对象 Objects》"原型"一节
- 结论依据:原文说明每个对象都连接到一个原型对象,检索属性沿原型链逐级委托查找直到 Object.prototype;同时给出"原型连接在更新时是不起作用的"的例子(对 another_stooge 赋值不影响 stooge),由此推出"原型链只影响读取路径、检索优先查自身"的结论。
- 原始内容:每个对象都连接到一个原型对象,并且它可以从中继承属性……原型连接在更新时是不起作用的。当我们对某个对象做出改变时,不会触及该对象的原型……原型连接只有在检索值的时候才被用到。