如果我做...
[] instanceof Array;
true...尽管我没有使用它,但它会返回new Array()。
但如果我这样做...
"" instanceof String;
...它返回false是因为我没有使用new String().
为什么?我知道这[]是一种用于创建数组""的语言构造,也是一种用于创建字符串的语言构造。所以我不明白为什么一个返回true,另一个返回false。
此外,以下所有代码都返回true:
[] instanceof Array; /* true */
Array() instanceof Array; /* true */
new Array() instanceof Array; /* true */
但是用字符串:
"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
也不应该String() instanceof String回来true吗?
编辑:
我提出了一个新问题(这个问题的衍生问题):检查变量是否为字符串的简单方法?