原型和原型链

101 阅读1分钟

原型:

每个函数都有prototype属性,该属性指向原型对象。 使用原型对象的好处是所有对象实例共享它所包含的属性和方法。

原型链:

访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会沿着它的_proto_ 属性所指向的那个对象(父对象)里找,直到为null为止,这样一层一层的就构成了原型链。
主要解决了继承的问题。

特点:

  • prototype是构造函数才有的属性

  • proto:是隐式原型,是对象才有的属性,由于函数也属于对象的一种,所以函数也有这个属性

  • constructor是原型对象才有的属性

  • 对象.proto === 构造函数.prototype

  • 构造函数.prototype.constructor = 构造函数

  • 所有构造函数proto 属性都指向 Function.prototype

  • 所有普通对象proto 属性都指向 Object.prototype

  • Object.prototype.proto === null

  • 实例本身没有constructor属性,constructor是原型对象才有的属性,所以它会沿着原型链在它的构造函数的原型对象上找到constuctor这个属性,也就是它的构造函数

原型链-导出.png