原型与原型链
前置知识
- 所有对象都是通过
new 函数
创建的(除了Function
这个构造函数对象) - 所有的函数也是对象
- 函数中可以有属性
- 所有对象都是引用类型
原型对象
所有函数都有一个属性: prototype
称之为函数原型
默认情况下,prototype
是一个普通的Object
对象
默认情况下,prototype
中有一个constructor
,他也是一个对象,它指向构造函数本身
隐式原型__proto__
所有的对象都有一个属性__proto__
,称之为隐式原型.
默认情况下,隐式原型指向创建该对象的的构造函数的原型(prototype
)
当访问一个对象的成员时:
- 看该对象自身是否拥有该成员,如果有,直接使用
- 看该对象的隐式原型是否拥有该成员,如果有,直接使用
- 在原型链中依次查找
猴子补丁: 在函数原型中加入成员,以增强对象作用,但会导致原型污染,使用需要谨慎.
原型链
Function
这个构造函数的隐式原型就是他的原型对象(Function.__proto__ === Function.prototype
)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 马嘉路!
评论