函数和原型

在看这篇文章 《理解Javascript原型》 时,有几段话把我看得一头雾水,举的列子我也没太看明白

每个函数都有一个原型属性。反过来,如果不是函数,将不会有这样一个属性。

函数A的原型属性(prototype property )是一个对象,当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例

于是自己在Chrome控制台测试了一下,总算能理解了,我们把这几段话一句句来剖析:

每个函数都有一个原型属性。

函数A的原型属性(prototype property )是一个对象


可看出,a是一个函数,拥有原型属性protoype,且该属性是一个对象

反过来,如果不是函数,将不会有这样一个属性。


b是由a实例化的一个对象,不是函数,故b没有原型属性

当这个函数被用作构造函数来创建实例时,该函数的原型属性将被作为原型赋值给所有对象实例

继续看这一句话,上面b是由a实例化的,所以a会将其原型属性(prototype)赋给b的原型


可看到b的原型和a的原型属性一致


也许看到这里你已经被 原型原型属性 弄晕了,我们阐释一下二者的区别:

原型属性  是指对象的属性 prototype

原型  是指对象的属性 __proto__,对应的是该对象构造函数内的原型属性

所以获得一个对象的原型可以通过obj.__proto__,也可以用obj.constructor.prototype获得



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值