为了账号安全,请及时绑定邮箱和手机立即绑定

所有javascript对象都有prototype还是仅仅函数对象有prototype?

所有javascript对象都有prototype还是仅仅函数对象有prototype?

手掌心 2018-10-20 15:10:37
http://blog.rainy.im/2015/07/...说到并不是所有的对象都拥有prototype这一属性,只有函数有但是看其他文章又说:每个对象都有一个指向它的原型(prototype)对象的内部链接到底所有javascript对象都有prototype还是仅仅函数对象有prototype?有啥区别?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

我们创建的每个函数都有一个 prototype(原型)属性,这个属性是一个指针,指向一个对象,
而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。

无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。

引自<<JavaScript 高级程序设计(第三版)>>中译本 第6.2.3节, 原型模式.

也就是JavaScript的prototype是仅函数拥有, 而对象也拥有prototype是源于其constructor属性所拥有的prototype.


查看完整回答
1 反对 回复 2018-11-07
  • 慕沐0269658
    慕沐0269658
    每个函数的都有一个prototype属性,而let obj1 = {}的是__proto__属性,new运算符函数就是把obj1.__proto__属性的this指向函数的prototype从而使实例能使函数的属性被obj1访问
  • 1 回答
  • 0 关注
  • 2207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信