javascript中的prototype理解

本文的大多数理解来自于阮一峰老师的解释,在此补充一些对于初学者有点难理解的地方。

http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html

1 为何会有prototype的出现-----节约内存

  首先看声明一个类

function person(name,age,skill1){
    this.name=name
    this.age=age
    this.skill=function(){
        console.log("i can "+skill1)
    }
}

我们在实例化对象的时候

var p1=new person('lyp',20,'play')

var p2=new person('lyp2',21,'play2')

当我们修改p2的属性时,不会影响到p1的属性。因此,p1,p2对象都指向了不同的内存空间。

假如某些属性,方法是共有的呢,比如人都会走,类别都属于人类。那么这样对于同样的属性/方法就必须开辟两个内存空间。

因此prototype出现了

2 prototype的使用

function person(name,age,skill1){
    this.name=name
    this.age=age
    this.skill=function(){
        console.log("i can "+skill1)
    }
}
person.prototype.wuzhong="human"
var p1=new person('lyp',20,'play')
var p2=new person('lyp2',202,'play2')
console.log(p1.wuzhong);//输出 human
console.log(p2.wuzhong);//输出human

3 实例化的时候没有指定wuzhong的类别,但是却可以输出。

我的理解类似于其它语言中的继续于父类,类似于再实例化p1时,也调用了person自己的构造函数。姑且理解为基类把。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值