菜鸟成长记录-JavaScript原型链的理解

本文深入浅出地解析了JavaScript中的原型链概念,通过与Java类的对比,详细阐述了如何使用原型方式定义类,以及原型链的工作原理。理解原型链对于掌握面向对象编程在JS中的实现至关重要。

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

文章内容仅为个人的学习总结,如有内容侵权请私聊我。

入门js的时候就被这个概念的弄的糊里糊涂的,弄懂了以后就豁然开朗了。

首先,我们需要了解的是这个原型链我们都用来干嘛的呢?于是,就与面向对象编程的思想挂钩了。在java编程中我们很容易理解类中的继承等概念。举个例子就是vehicle类的实例对象bus,这一个关系在java中我们可以很简单的实现,就是编写一个vehicle类,然后new出一个实例对象,这个实例对象的名字就是bus。在js中的定义类的方法有好几种,其中一种是原型方式:

function proCar(){}

proCar.prototype.name="原型";
proCar.prototype.color="red";
proCar.prototype.price="100";
proCar.prototype.getName=function(){return name};
proCar.prototype.getColor=function(){return color};
//这种方法中所有实例的属性为对象时,如数组时,就会指向同一个。

这里想要引出的就是prototype这一属性,所有实例共享的方法都通过prototype来定义。(留个疑问,为什么呢?)

接下来要好好滴理解下面几条规则:

1.所有普通对象都会有一个__proto__属性,该属性指向一个对象,这个对象就叫原型对象。(如儿子,女儿都叫他们的妈为“妈”)

2.这个原型对象会与一些共享的方法和属性,且都有一个constructor属性,这个属性指向构造函数。

3.所有函数对象都有一个prototype属性,它引用了一个对象,这个对象就是前面提到的原型对象

4.而原型对象实际上它又可被看作某个普通对象,它也有自己的原型对象。

于是一条原型链就出来了。

前面的疑问中所有实例共享的方法都通过prototype来定义?

构造函数proCar的prototype属性就指向一个叫原型对象

的东西,然后我们把实例共享的方法定义在原型对象上,实例在查找这些方法的时候就会根据原型链逐级查找。

当你能自由的画出这个原型链的图,那对原型链的核心就差不多掌握了的。自己也是通过不断地去查看博客相关资料,然后逐点弄懂。这个不难,理解了以后就真的是豁然开朗。

个人笔记

个人笔记

 个人笔记

个人笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值