有了这个:
console.log(String.prototype);
Chrome注销:
String{}
有了这个:
console.log(String);
Chrome注销:
function String(){ [native code] }
由于String{}
和String()
都有相同的名称,为什么console.log(String)
选择函数而不是对象?
答案 0 :(得分:3)
由于
String{}
和String()
都有相同的名称,为什么console.log(String)
选择函数而不是对象?
出于显而易见的原因:String
功能而String.prototype
对象。如果Chrome为这两种不同的值/数据类型生成相同的输出,那将会相当混乱。
对于函数,Chrome实际上显示了函数的实现(func.toString()
)。某些函数不是在JavaScript中实现,而是在本机代码中实现,因此您会看到[native code]
。
对于对象,Chrome会获取对象的name of the function(如果可用)referred to by the constructor
property。 String.prototype.constructor
的值为String
。
答案 1 :(得分:0)
String
是构造函数(函数),String.prototype
不出所料是String
类的原型(在这种情况下为{}
)