js中原型对象详解

本文深入解析JavaScript中使用原型对象的目的,通过实例展示如何利用原型对象实现资源共享,减少内存消耗,以及如何通过原型链继承方法和属性。同时,文章探讨了如何修改原型对象,以及其在构造函数和实例对象之间的关系。

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

我们先来了解一下,js使用原型对象的作用是什么?

回答:在使用自定义构造函数创建对象情况下,在实例化多个对象时,可能有很多方法或者属性相同,比如一个人的对象构造函数,那么人都有会跑的方法一样,都有10个拇指等等属性,这个人对象的方法,你实例方法的时候都得一一创建内存空间,这样太耗资源,那么就需要一个共享空间,共享库来装,那么这样实例化的时候,相同的内容就不用浪费内存空间了,在后面继承的时候,你的父类原型对象没有整这个方法,还可以通过原型链继承祖先的内容使用到。

好,下面通过代码来试一试

<script>
   function Person(){
   }
   Person.prototype.muzhi=10;
   Person.prototype.run=function(){
       console.log("我们都会跑");
   }
   var p1=new Person();
   console.log(p1);
   console.log(p1.muzhi);
   p1.run();
   var p2=new Person();
   console.log(p2);
   console.log(p2.muzhi);
   p2.run();
</script>

这个效果是什么呢,请看

那么我们看出来这样节省了内存空间,都说原型对象,是啥意思,没看到对象呢?

原来为每个构造函数专门设置了一个原型对象,用来存取一些共享属性,并且可以构成原型链。

我们的拇指和run方法都是在这个构造函数的原型对象上面进行增加的,那么可以用一个别的独享,替换这个原型对象吗?答案是可以的。空口无凭,下面我们上代码,验证一下

通过对象的形式设置原型对象(共享库)的属性和方法,效果一样的,这样也证明了对象被修改了

 function Person(){
   }
   Person.prototype={
       muzhi:10,
       run:function(){
           console.log("我们都会跑")
       }
   }

有人会问:哪里证明原型对象可以更改,首先原型对象我们要怎么获取,有以下两种

1.Person.prototyte,这就可以明白为什么上面让他等于对象就替代了的原因。

2.p.__proto__(__proto__在实际中一般不适用,因为作用是在方便调试产生的)。

下面我们通过一张图来了解一下实例对象,构造函数,原型对象,看完在反复读这篇博客,你就懂了。

  

图片看了,还不清楚,我们来一一打印一下

 function Person(){
   }
   Person.prototype={
       muzhi:10,
       run:function(){
           console.log("我们都会跑")
       }
   }
   var p1=new Person();

这下一目了然了吧,原型里面还有原型链的存在,也就是下节博客的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值