原型对象的作用及原型对象的用法

        最近遇到一个初学者问我,原型对象怎么用,所以在这里我总结一下原型对象的作用,并用简单的例子来展示原型对象的用法

    一原型对象的作用:

                     原型对象,是用来解决构造函数在创建实例的时候,防止重复执行所导致的性能的降低(这里主要指占用内存),来为服用带来方便

                         ¥下面附上一个简单的例子来说明,代码的重复执行,导致的性能降低


  这是构造函数创建的两个对象,为什么p1.sayHello和p2.sayHello不相等呢,因为构造函数创建了两个实例,而每创建一个实例,构造函数就会执行一次(构造函数的执行过程

可以看我之前的微博,下面有链接,就不再重复赘述了)构造函数执行,sayHello方法就会创建一次,因为两个sayHello方法 地址就不相同,所以用p1和p2调用的sayHello方法就不是同一个方法,但是他们的逻辑和功能是一样的,这样就导致了代码的冗余,并且影响性能,这里可以将方法写在原型对象中,构造函数的实例可以直接访问,原型对象,这样他们就相等了,下面用小例子来展示


这里为什么,不把属性放在原型函数中而把方法放在原型函数中呢?因为每个具体实例的属性是不同的,比如:name ,当然所有实例共有的属性当然也可以放在原型函数中,但是用方法可以定义一些行为,实例的行为大多都一样,所以可以放在原型中,供大家一起访问。

  二、原型对象的用法:

      原型对象的使用方法有两种
* 1、利用对象的动态特性完成添加
* 语法:构造函数名.prototype.xxxx=yyyy
* 2、直接替换
* 语法:构造函数名.prototype={};
* 替换过后之前的原型依然存在,因为p1仍然指向之前的原型,只有当p1不使用的时候才会被销毁
 下面用一个例子来说明,这两个方法的使用


下面是执行结果


接下来我用图示为大家解释一下


下面我来阐述一下缘由:

因为Person的实例对象会默认链接到神秘函数(这里指原型对象),用动态方法添加的时候,虽然p1对象中没有sayCount方法,但是可以继承原型函数中的方法,直接去调用原型函数中的方法,当用直接替换的方法去设置Person的prototype属性的时候,原来添加的原型会被替换,所以这里我用虚线表示之前的原型被替换,但是,之前在替换之前,根据js的解释执行的特点,已经给Person创建了一个实例p1,p1会默认连接到添加的那个原型对象,所以p1不改变,而p2在替换之后创建的所以默认连接到替换之后的sayCount,

所以p1.sayCount()为1111   p2.sayCount()为2222

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值