简单讲讲原型和原型链
# 简单讲讲原型和原型链
# 什么是原型链
简单的说,每个对象都有自己的原型对象,而原型对象也是一个对象,所以它也有自己的原型对象,这样找下去,最终会找到Object,因为所有的对象都继承自Object。Object的原型对象是null,就没了。
这个像链子一样的结构就被叫做原型链,它描述的是对象之间的一个继承关系,我们可以使用
Object.setPrototypeOf
为一个对象设置原型Object.getPrototypeOf
获取一个对象的原型Object.isPrototypeOf
判断一个对象的原型
# 举个例子
比如现在有个构造函数
然后通过这个构造函数实例化一个对象出来
function Person() {}
var per = new Person()
console.log(per)
per.__proto__ === Person.prototype // true
per.__proto__.__proto__ === Object.prototype // true
per.__proto__.__proto__.__proto__ === null // true
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
实例化对象的身上都有一个 __proto__
原型对象,它指向构造函数身上的的原型对象 prototype, 而构造函数的原型对象也有自己的原型 __proto__
,它指向的是Object prototype,接着Object.prototype身上的 __proto__
最终指向了null