使用此:
console.log(String.prototype);
Chrome注销:
String{}
有了这个:
console.log(String);
Chrome注销:
function String(){ [native code] }
既然String{}
和String()
的名称相同,为什么console.log(String)
选择函数而不是对象?
既然
String{}
和String()
的名称相同,为什么console.log(String)
选择函数而不是对象?
原因很明显:String
是一个函数,而String.prototype
则是对象。如果Chrome为这两种不同的值/数据类型生成相同的输出,那将相当令人困惑。
对于函数,Chrome实际上显示了函数(func.toString()
)的实现。有些函数不是用JavaScript实现的,而是用本机代码实现的,因此您可以看到[native code]
。
对于对象,Chrome采用对象的constructor
属性所引用的函数的名称(如果可用)。String.prototype.constructor
的值为String
。
String
是构造函数(一个函数),String.prototype
是String
类(本例中为{}
)的原型,这一点不足为奇