深入理解原型链

2023-11-25 00:18:57

一、原型链定义

原型链是一种查找规则

当查找一个对象上的属性或者方法时,首先从自身属性开始查找,如果没有,则去该对象的原型上查找(__proto__),如果没有,再去对象的原型的原型上去查找,直至null(Object.prototype.__proto__ === null)结束,这种链式查找,被称为原型链。

MDN上对原型链解释:

当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象( object )都有一个私有属性(称之为 __proto__ )指向它的构造函数的原型对象(prototype)。该原型对象也有一个自己的原型对象( __proto__ ) ,层层向上直到一个对象的原型对象为null。根据定义,null没有原型,并作为这个原型链中的最后一个环节。

二、举例说明

比如:const obj = {},我们那obj对象来进行它的原型链举例说明:

每个对象都有一个内部属性__proto__(不能在代码中使用),这个属性指向构造当前对象的构造函数的prototype。

obj的原型链:

obj.__proto__ === Object.prototype;
Object.prototype.__proto__ === null;

以上就是obj对象的原型链,直至null结束。

当我们想要访问obj上一个属性时,如果obj对象上没有时,就会顺着它的原型链上查找,如果找到就返回,否则,一直查找到null,代表没有找到,就会返回undefined。

接下来,我们通过一个图,列出在 new 实例一个对象时,出现的每个对象间的原型关系:

__proto__

目录

相关推荐
深入理解对象原型__proto__深入理解constructor对象的isPrototypeOf和静态方法Object.getPrototypeOfJavaScript--原型链图解Object对象中的静态方法setPrototypeOf