String.prototype
String {}
Object.prototype
Object {}
Boolean.prototype
Boolean {}
但Array.prototype
输出[]
,为什么不Array []
或其他?发生了什么事?
答案 0 :(得分:1)
我查看了ECMA规范和V8源代码,但我无法得到具体答案。
根据ECMA-262 spec,每个对象必须具有所有基本内部方法的算法,但是,所有对象不一定对这些方法使用相同的算法,这意味着输出将至少在实现中具体实现 [[GetPrototypeOf]] 。
的情况因此,如果您在不同的浏览器中尝试相同的操作,您会注意到每个浏览器的输出略有不同。
Internet Explorer 11:
Array.prototype
[object Array] []
String.prototype
[object String] {length:0}
Object.prototype
[object Object] {}
Boolean.prototype
[object Boolean] {}
<强>火狐:强>
Array.prototype
[object Array]
String.prototype
[object String]
Object.prototype
[object Object]
Boolean.prototype
[object Boolean]
Chrome和Opera:
Array.prototype
[]
String.prototype
String {}
Object.prototype
Object {}
Boolean.prototype
Boolean {}