javascript原型(容易犯糊涂点的总结)

本文深入探讨了JavaScript中复杂的原型继承机制,包括构造函数、实例与原型间的关系,以及__proto__与prototype的区别。

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

在javascirpt中,每个对象都有一个指向它的原型对象的内部链接,这个原型对象又有自己的原型,一级一级链接上去,直到某个对象的原型为null,从而实现了继承。

犯浑的地方

javascript中的原型继承几乎是面试必问点,然而真正透彻的理解它还是需要费一番功夫的,prototype, __proto__, constructor等等看到脑子就昏掉了,有时候以为自己掌握了,但是没过多久看到角度不同的讲解时就又犯糊涂了TT

犯浑点1:javascript中的构造函数,实例与原型之间的关系。

借用这篇文章中的一幅图:

图片描述

总结出了以下三点内容:

  1. 原型继承的时候仅仅限于对象之间的继承;

  2. 通过构造函数生成的对象实例,实际上继承的是构造函数的原型;

  3. 构造函数在其中只是充当了构造器的角色,在考虑继承关系时,可以将其忽略,而只考虑其的prototype;

举个例子,使用Array构造器函数生成Array实例的时候,实例继承的是Array函数的prototype对象,Array的prototype对象上声明了concat,pop,splice等等的方法。

犯浑点2: 另外一个糊涂的点就是__protp__与prototype的关系。

__proto__在某些环境下可以得到该对象的原型对象, 但是标准的方法是
通过Object.getPrototypeOf()的方式查询a的原型对象。

所以,不使用__proto__,使用Object.getPrototypeOf()的方法既标准,又可以避免我们因为__proto__和prototype混淆而头疼。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值