构造函数与原型的本质联系

构造函数与原型的本质联系

原型图解
我们把构造函数A001看作是妈妈(以上图为参考),把原型A002看作是爸爸。A001通过指针prototype可以指向原型A002,A002通过指针constructor可以指向构造函数A001,它们之间是你中有我,我中有你的关系。也就可以看做是夫妻关系。
A001和A0002
实例对象B001和B002都是通过obj=new Object();创建出来的——它们是通过构造函数创建出来的,所以,B001和B002就是A001的孩子,A001在创建实例对象时,会给B001和B002一个默认属性__proto__,通过__proto__它们就可以找到对应的原型A002,如下图所示。
在这里插入图片描述
实例对象可以找到原型——知道了自己的爸爸是原型A002,那么爸爸的东西就是自己的,实例对象就可以直接调用原型中的所有方法和属性,如toString(); valueOf();等。这样可以防止实例对象重写后出现的大量冗余,所以,原型对于实例对象来说,就是提供给它们公共区域来存储公共的方法和属性。

实例对象自己也可以添加自己的属性和方法的,并且放到自己底下,如B001中添加的属性是{name:‘terry’,age:12},B002中添加的属性是{name:‘lisa’,age:23},这就像每个孩子都有自己的特点,不是公共的,不能共享。
而构造函数,我们在最上面的图解中可以看到,实例对象没有指向构造函数,所以实例对象无法调用构造函数中的方法,不过它可以作为工具,供实例使用。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值