0%

js原型链

有限的实例对象和原型之间组成有限链,用来实现共享属性和继承的。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
function fn01(){
this.name01 = 'fn01';
}
function fn02(){
this.name02 = 'fn02';
}
fn02.prototype = new fn01();
function fn03(){
this.name03 = 'fn03';
}
fn03.prototype = new fn02();
let newFn = new fn03();
console.log(newFn);

返回结果:

1
2
3
4
5
6
7
8
name03: "fn03"
__proto__: fn01
name02: "fn02"
__proto__: fn01
name01: "fn01"
__proto__:
constructor: ƒ fn01()
__proto__: Object

构造函数、原型和实例的关系

  • 构造函数都有一个属性prototype,这个属性是一个对象(Object的实例)
  • 原型对象prototype里面有一个constructor属性,该属性指向原型对象所属的构造函数
  • 实例对象都有一个_proto_属性,该属性也指向构造函数的原型对象,它是一个非标准属性,不可以用于编程,它是用于浏览器自己使用的

prototype_proto_的关系

  • prototype是构造函数的属性
  • _proto_是实例对象的属性