理解js原型链__proto__与prototype的关系

js cdn 参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain

1.

每个实例对象( object )都有一个私有属性(称之为__proto__)

image.png
// 定义函数Aa()
function Aa() {}

// 实例化对象bb
var bb = new Aa();

// 每个实例对象( bb )都有一个私有属性(称之为__proto__)
bb.__proto__
2.

__proto__指向它的构造函数原型对象(prototype )

image.png
// __proto__指向它的构造函数的原型对象(prototype)
bb.__proto__ === Aa.prototype
3.

原型对象也有一个自己的原型对象( __proto__ )

image.png

// 该原型对象也有一个自己的原型对象( __proto__ )
Aa.prototype.__proto__
4.

层层向上,直到一个对象的原型对象null

image.png

// 层层向上
Aa.prototype.__proto__ === Object.prototype

// 直到一个对象的原型对象为null
Object.prototype.__proto__
5.

根据定义,null 没有原型,并作为这个原型链中最后一个环节

注:对于新手来说,实在不理解就背过吧,背过+多看几遍=理解x80%

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):