Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascript中,为什么没有实例或对象文字的"prototype“属性?

在Javascript中,为什么没有实例或对象文字的"prototype“属性?
EN

Stack Overflow用户
提问于 2015-06-29 23:20:13
回答 1查看 1.6K关注 0票数 6

在Javascript中,任何“函数对象”都有一个原型。

代码语言:javascript
运行
AI代码解释
复制
> F = function() {}
F()
> F.prototype
F {}

但是“对象”或“实例”没有原型

代码语言:javascript
运行
AI代码解释
复制
> o = {}
Object {}
> o.prototype
undefined
> f = new F()
F {}
> f.prototype
undefined

但是,内置对象“函数”和“对象”有一个原型:

代码语言:javascript
运行
AI代码解释
复制
> Function.prototype
Empty()
> Object.prototype
Object {}

这对我来说很让人困惑。

  1. Function和“函数对象”具有一个原型属性
  2. Object有一个prototype属性,但是“对象文本”和“实例对象”没有prototype属性

prototype属性实际上意味着什么?在上面的例子中,prototype属性f不应该是F

有没有人想办法解释这件事?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-29 23:24:57

不要混淆函数的prototype属性和对象的内部原型(将对象放在prototype链中)。

FunctionObject是构造函数,因此,它们有一个prototype属性,它将被分配为用这些构造函数创建的对象的内部原型。

我推荐雄辩的Javascript的章节“物体的秘密生命”,特别是这句话:

重要的是要注意到原型与构造函数的关联方式(通过其prototype属性)和对象拥有原型的方式(可以用Object.getPrototypeOf检索)之间的区别。构造函数的实际原型是Function.prototype,因为构造函数是函数。它的prototype属性将是通过它创建的实例的原型,但不是它自己的原型。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31131973

复制
相关文章

相似问题

为什么prototype的属性不在javascript对象中显示为portoype属性?

15

Javascript -在构造函数或构造函数的prototype属性中设置属性?

20

使用Prototype遍历javascript中对象的每个属性?

30

JavaScript对象文字属性范围

34

javascript prototype属性

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档