深刻理解js原型链

JavaScript 的原型链(Prototype Chain)是 JavaScript 中用于实现继承和查找对象属性的一种机制。在 JavaScript 中,每个对象都有一个特殊的属性,称为 __proto__(非标准但广泛支持,ES6 引入了 Object.getPrototypeOf() 方法作为替代),它指向了创建该对象的构造函数的 prototype 属性。这个链式的关系一直向上延伸,直到 null,这就是所谓的原型链。
在这里插入图片描述

  function Person() {}
  Person.prototype
  const p = new Person()

如图所示

  1. Person构造函数通过 new 关键字可以创建实例。
  2. 实例p通过__proto__指向原型对象Person.prototype。那么有
    p.__proto__===Person.prototypeES6中是Object.getPrototypeOf(p) === Person.prototype
  3. Person.prototype.constructor === Person,原型对象的constructor属性又指向了Person构造函数。

以上是以某一个构造函数的角度来看到原型链的。
下面来看如何创建对象

  Object
  Object.prototype
  const o = new Object()

在这里插入图片描述
与上面Person关系一样。
其中Person与Object存在怎样的关系呢。
Person.prototype.__proto__===Object.prototype
这就是两者之间的关系。
Person.prototype本质上是Object的一个实例,因此Person.prototype在第二张图中相当于是实例o,这就形成了原型链向上找的特性。
理解这两张图便理解了原型链是什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值