Object.prototype.toString.prototype为什么是undefined
Object.prototype.toString是Function类型,那为什么没有原型,怎么做到没有原型的
日常思考
Object.prototype.toString.prototype //undefined
疑问
所有函数都有prototype,但为什么例子中的是undefined呢?而且undefined也不是对象
你不知道的javascript上有这么一句话:所有函数默认拥有一个名为prototype的公有并且不可枚举的属性。
所以我很好奇,并且例如Math.max也没有prototype属性
这句话不能说错,只能算话没说完。“默认”确实是这样,但
prototype
只是一个普通属性,可人为设定,__proto__
才是继承的(虽然也可以修改)。prototype
存在的意义是在 function 作为 constructor 用时(new
或super
)能复制到生成对象的__proto__
上。对于一些内部方法明确是不会作为 constructor 的,所以没有prototype
是很合理的(同时也没有[[Construct]]
内部属性)。详细阅读参见规范: