为什么:
console.log( typeof String );
当它是object时会返回function
吗?
答案 0 :(得分:6)
String是字符串对象的构造函数。所有构造函数都是函数,因此是您看到的返回值。
您可以通过创建如下代码来自行查看:
var MyObject = function (value) {
this.value = value;
};
MyObject.prototype.getValue = function () {
return this.value;
}
console.log(typeof(MyObject)); // function
console.log(typeof(new MyObject(1))); // object
答案 1 :(得分:1)
这是因为String和" String"之间存在很大差异。让我详细说明一下:
console.log(typeof String)
将返回功能
console.log(typeof "String")
将返回字符串。
这是因为String
实际上是一个全局构造函数。它用于创建字符串!
var string = new String('2 + 2'); // creates a String object
console.log(string); // returns the string object. try it
" String"是一个字符串,因为javascript将其转换为字符串原语。
var string1 = '2 + 2'; // creates a String object
console.log(string1); // returns the string primitive. try it
答案 2 :(得分:0)
您将获得作为函数的typeof
String
构造函数(请参阅this documentation)。所有构造函数都是function
s,这就是为什么如果你console.log(String)
,你得到:
function String() { [native code] }
显然是function
。
如果您想确定某些内容是否为字符串:
对于字符串文字,您可以使用:
console.log(typeof 'foo');
或者如果您有要测试的变量,请使用:
var str 'bar';
console.log(typeof str);
以上两个代码段都会记录string
。
答案 3 :(得分:0)
String()
是一个函数
JavaScript String()
功能
String()
函数将对象的值转换为字符串。
注意:String()
函数返回与单个对象的toString()
相同的值。
请参阅Reference