【发布时间】:2012-08-28 14:31:46
【问题描述】:
这个问题是[] is an instance of Array but "" isn't of String的衍生问题
鉴于此
"" instanceof String; /* false */
String() instanceof String; /* false */
new String() instanceof String; /* true */
和
typeof "" === "string"; /* true */
typeof String() === "string"; /* true */
typeof new String() === "string"; /* false */
然后,如果我有一个变量abc 并且我想知道它是否是一个字符串,我可以这样做
if(typeof abc === "string" || abc instanceof String){
// do something
}
有没有更简单、更短、更原生的方法,还是我必须创建自己的函数?
function isStr(s){
return typeof s === "string" || s instanceof String;
}
if(isStr(abc)){
// do something
}
【问题讨论】:
-
您真的在代码中使用
new String()还是只是一个理论问题? -
他可能不得不处理其他人的代码,只是想确保在不阅读(甚至无法访问)所有代码的情况下捕获所有
String类型。 -
@zerkms 这是一个理论问题。但如果两个程序员一起工作,一个使用
"",另一个使用new String(),这可能是一个实际问题。 -
jQuery 在检查传入参数的类型时只使用
typeof s === "string"。我怀疑这通常可以正常工作,因为很少有人从new String()显式编码字符串对象。
标签: javascript string