原型链

一、基础概念

javascript一切皆对象,分为函数对象与普通对象,每个对象都有__proto__属性,只有函数对象才有prototype属性

每个函数对象都有一个prototype,即显示原型(属性),每个实例对象都有一个__proto__,即隐式原型(属性),对象的隐式原型的值为其对应构造函数的显示原型的值

每个函数都有一个prototype属性,默认指向一个Object空对象(即称为原型对象),原型对象中有一个属性constructor,它指向函数对象,给原型对象中添加属性(方法),函数的所有实例对象自动拥有原型中的属性(方法)

二、代码理解

// 实例对象
f1.__proto__ = Fn.prototype
// 构造函数
Fn.prototype.constructor = Fn
Fn.__proto__ = Function.prototype
Fn.prototype.__proto__ = Object.prototype
// Object
Object.prototype.constructor = Object
Object.prototype.__proto__ = null
Object.__proto__ = Function.prototype
// Function
Function.prototype.constructor = Function
Function.__proto__ = Function.prototype
Function.prototype.__proto__ = Object.prototype
复制代码

三、可视逻辑

原型链.jpg

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享