【高频考点精讲】原型链终极指南:从__proto__到继承,手把手教你理解JavaScript核心机制

原型链终极指南:从__proto__到继承,手把手教你理解JavaScript核心机制

大家好,我是全栈老李。今天咱们来聊聊JavaScript里那个让人又爱又恨的原型链,这玩意儿就像是你家祖传的族谱,搞懂了它,JavaScript的继承机制就再也不是玄学了。

先来个灵魂拷问:为什么"abc".length能正常工作?字符串明明不是对象啊!这就是原型链在背后默默干活的结果。当你访问一个基本类型的属性时,JavaScript会临时把它包装成对象,然后通过原型链找到对应的方法或属性。

一、原型链是个啥?

简单说,原型链就是JavaScript实现继承的方式。每个对象都有一个隐藏的[[Prototype]]属性(可以通过__proto__访问),指向它的"爸爸"。当访问一个对象的属性时,如果对象本身没有,就会去它爸爸那找,爸爸没有就找爷爷,一直找到顶层的Object.prototype,这就是原型链。

function Person(name) {
   
  this.name = name;
}

// 全栈老李提示:给构造函数的原型添加方法,所有实例都能共享
Person.prototype.sayHi = function() {
   
  console.log(`Hi, I'm ${
     this.name}`);
};

const lilei = new Person('李雷');
lilei.sayHi(); // Hi, I'm 李雷

// 全栈老李划重点:实例的__proto__指向构造函数的prototype
console.log(lilei.__proto__ === Person.prototype); // true

二、原型链的完整路径

让我们画个图更直观地理解:

lilei -> Person.prototype -> Object.prototype -> null

当你访问lilei.toString()时,JavaScript会这样找:

  1. 先看lilei自己有没有toString方法 → 没有
  2. Person.prototype找 → 也没有
  3. Object.prototype找 → 找到了!
  4. 调用找到的方法

三、继承的几种姿势

1. 组合继承(最常用)

function Parent(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈老李技术面试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值