1. 每个对象都有原型属性(__proto__)
2. 对象的原型(__proto__)指向其构造函数(Constructor)的prototype属性
3. 构造函数(Constructor)的prototype属性本身也是一个对象,其原型(__proto__)亦指向其构造函数的prototype
4. 如此形成一个链式结构,而Constructor.prototype若没有自定义构造函数,则其始终是一个对象,构造函数为Object,
原型为Object.prototype
5. Object.prototype的原型为null,原型链结束
原型链一般用来查找对象的属性和方法,进行类的继承等功能
现象说明
Object.prototype.__proto__ === null JS世界的源头一片荒芜,一切皆空
Object.__proto__ == Function.prototype Object是构造器,本身也是函数,所以其原型就是Function的prototype
Function.__proto__ == Function.prototype Function也是一种函数,所以其原型也是Function的prototype
相关方法
object.hasOwnProperty(propName) 判断对象本身是否有该成员,而不是从原型链继承的成员
object1.isPrototypeOf(object2) 判断object1是否在object2的原型链上