原型的称呼问题

prototype 这个属性, 称之为原型属性, 或者显示原型
proto 这个属性, 称之为原型对象, 或者隐式原型

这个说法对吗?

阅读 2.7k
3 个回答

我觉得你可能说的是构造器原型Object.prototype和内部原型Object.prototype.__proto__
一个 Object 的 __proto__ 属性和自己的内部属性 [[Prototype]] 指向一个相同的值 (通常称这个值为原型)。
[[Prototype]]通常是我们所说的原型链,或者说 Object.prototype 属性表示对象 Object 的原型对象。

可以 参考这里

没必要区分什么显式,隐式,只要记住,__proto__是每个对象都拥有的,但一般代码中不用,prototype只有函数对象拥有,代码中用的多。
另外,不管是prototype还是__proto__本身都是对象(null暂不考虑),“原型属性”“原型对象”的称呼反而容易产生误解。

我是这样理解的:

prototype属性,当这个JS对象是函数对象时才有prototype属性。
它指向该JS对象的原型对象。(这时,这个JS对象就是构造函数)

__proto__属性,每个JS对象都有__proto__属性。
它指向该JS对象的构造函数的原型对象。即:
p.__proto__ == P.prototype

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题