为什么typeof String返回函数

时间:2015-03-11 00:16:53

标签: javascript

为什么:

console.log( typeof String ); 当它是object时会返回function吗?

4 个答案:

答案 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