Skip to content
本页目录

原型与原型链

释义

  • prototype 显式原型

  • __proto__ 隐式原型,指向它的原型对象

  • constructor 构造器,指向构造函数

  • 对象._proto__ === 其构造函数.prototype

  • 在 JS 中,constructor 属性是专门为 function 而设计的,它存在于每一个 functionprototype 属性中。这个 constructor 保存了指向 function 的一个引用

JS
function Star(name) {
    this.name = name;
}
let obj = new Star('小红');
console.log(Star.prototype.constructor === Star);   // true
console.log(obj.__proto__.constructor === Star);    // true
function Star(name) {
    this.name = name;
}
let obj = new Star('小红');
console.log(Star.prototype.constructor === Star);   // true
console.log(obj.__proto__.constructor === Star);    // true

什么是原型?

每个函数(箭头函数除外)都会有一个 prototype 属性,其中文意思就是原型;这个属性是一个对象,称为原型对象。

作用:

  • 存放实例对象共享的属性和方法
  • 实现继承

什么是原型链?

每个实例对象都有 _proto__ 属性,这个属性指向它的原型对象,原型对象也是对象,所以它也有 _proto__ 属性,指向其对应的父原型对象,这样一层一层形成的链式结构称为原型链,原型链的最顶层为 null

继承的实现

1. ES5 构造函数 + 原型对象模拟实现继承