为什么Javascript的instanceof为这些原生构造函数返回true?

时间:2012-04-27 16:21:29

标签: javascript prototype

这是在Mozilla Firefox Web控制台上;

> Function instanceof Function;
>true

>Array instanceof Function;
>true

>String instanceof Function
>true

2 个答案:

答案 0 :(得分:7)

因为所有构造函数都是函数,FunctionArrayString都是构造函数(即,您使用new)。

答案 1 :(得分:1)

通常人们不会将构造函数用于这些类型,而是选择[]""function(){}等文字。但是,您可以使用构造函数方法创建字符串,数组和函数:

var str = new String("Hello World");

请注意,我们正在调用一个函数 - 字符串构造函数。数组的情况也是如此:

var arr = new Array("Hello", "World");

再次,调用一个函数。这些都是Function的实例,因为我们使用了它们的构造函数。文字的情况并非如此:

var str = "Hello World";
console.log( str instanceof Function ); // false

var arr = ["Hello", "World"];
console.log( arr instanceof Function ); // false