记住这两点,彻底终结原型链吧

本文介绍了JavaScript原型链相关概念,包括对象特有的__proto__,指向构造函数的prototype以继承属性和方法;函数特有的prototype用于存储共享属性和方法,以及定义在其中的constructor。还阐述了Object、Function等既是函数也是对象,最后总结了原型链顶端及对象继承关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章极短,没有图!

1.概念

__proto__

  • 对象特有
  • 指向上层(创建自己的那个构造函数)的pototype
  • 因此对象可以从 prototype 中继承属性和方法

prototype

  • 函数特有
  • 用于存储要共享的属性和方法

constructor

  • 函数特有,定义在prototype里面
  • 通过new创建实例时,该实例便继承了prototype的属性和方法

2. 既是函数也是对象

Object:既是对象,也是构造函数

  • 作为对象:Object.__proto__ = Function.prototype

  • 作为函数:Object.prototype是原型链的顶端,Object.prototype.__proto__ = null

Function:既是对象,也是构造函数

  • 作为对象:Function.__proto__ = Function.prototype

  • 作为函数:Function.prototype用于共享,而Function.prototype__proto__继承自Object.prototype

Array(Date...):既是对象,也是构造函数

  • 作为对象:Array.__proto__ = Function.prototype
  • 作为函数:Array.prototype用于共享,Array.prototype.__proto__继承自Object.prototype

普通对象Person:既是对象,也是构造函数

  • 作为对象:Person.__proto__ = Function.prototype
  • 作为函数:Person.prototype用于共享,Person.prototype.__proto__继承自Object.prototype

总结

  1. 原型链顶端是Object.prototype

  2. 构造函数创建的对象(Object、Function、Array、普通对象等)都是Function的实例,它们的__proto__均指向Function.prototype

  3. 除了Object,所有对象(或叫构造函数)的prototype,均继承自Object.prototype

希望这篇简短的文章可以帮助你彻底理解原型链,如果觉得文章有用,点赞鼓励一下吧~



转载:https://juejin.im/post/5ccf800cf265da03b0517112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值