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

js 什么情况下函数的prototype是undefined

js 什么情况下函数的prototype是undefined

慕容3067478 2018-09-30 01:13:20
Object.prototype.toString.prototype为什么是undefinedObject.prototype.toString是Function类型,那为什么没有原型,怎么做到没有原型的日常思考 Object.prototype.toString.prototype  //undefined疑问所有函数都有prototype,但为什么例子中的是undefined呢?而且undefined也不是对象你不知道的javascript上有这么一句话:所有函数默认拥有一个名为prototype的公有并且不可枚举的属性。所以我很好奇,并且例如Math.max也没有prototype属性
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞


Object对象本身是一个函数对象,因此其有prototype属性,且Object.prototype的值是空对象{}。
另外,通过Object.prototype.__proto__获取Object的原型时,将会得到null,也就是说原型对象{}就是原型链的终点。

查看完整回答
反对 回复 2018-10-08
?
守着一只汪

TA贡献1872条经验 获得超3个赞

所有函数默认拥有一个名为prototype的公有并且不可枚举的属性

这句话不能说错,只能算话没说完。“默认”确实是这样,但 prototype 只是一个普通属性,可人为设定,__proto__ 才是继承的(虽然也可以修改)。

prototype 存在的意义是在 function 作为 constructor 用时(new 或 super)能复制到生成对象的 __proto__ 上。对于一些内部方法明确是不会作为 constructor 的,所以没有 prototype 是很合理的(同时也没有 [[Construct]] 内部属性)。

详细阅读参见规范

Built-in functions that are not constructors do not have a prototype property unless otherwise specified in the description of a particular function.


查看完整回答
反对 回复 2018-10-08
  • 2 回答
  • 0 关注
  • 1837 浏览
慕课专栏
更多

添加回答

举报

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