原型和原型对象到底指的是什么?它们是一样的吗?

作者站长头像
站长
· 阅读数 20

原型和原型对象到底指的是什么?

看到一些描述里,又有原型一词,又有原型对象一词(可以查看我的另一个问题,就同时遇到了这两个词)。

  • 这两者分别是指谁?还是一样的意思呢?
  • 是函数里面经常提到的prototype还是在原型链中经常提到的[[Prototype]]
  • 还是没有明确的规定只是个人的随意起了名字?

今天在看babel的文档时又遇到了原型对象一词,根据上下文看,这里的原型对象说的应该是prototype而不是[[Prototype]]原型和原型对象到底指的是什么?它们是一样的吗?

顺便说一下这里的翻译:

  • 内置对象改为内置函数更合适一吧。当然函数也是个对象。
  • 添加对象应该是添加属性

英文原文原型和原型对象到底指的是什么?它们是一样的吗?

回复
1个回答
avatar
test
2024-06-23

对象的原型是一个原型对象。

看 ecma262 的用法,大概是,对象有原型 (object t's prototype);类型有原型对象 (Function prototype object, String prototype object, 还有 Object prototype object, 等等)。

t=new T; ,t 的原型是 T 原型对象。


ecma262 里,对 prototype 有一句说明:

Every object created by a constructor has an implicit reference (called the object's prototype) to the value of its constructor's "prototype" property.

对所谓 prototype object 是没有定义的,只是一个习惯叫法。(但是对 Object prototype object, Function prototype object 等具体对象是有定义的。)感觉大概就是构造函数的 prototype 属性里的那个 object 叫 prototype object 。

看你引文的用法,跟 ecms262 是不一致的。但是了解 js 的继承机制的话,基本也可以明白是怎么回事,不会对理解带来什么障碍。


英文就已经乱了的话,中文就更不好统一了。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容