检查参数是否为字符串

我有一个使用
document.getElementById()
的JavaScript函数。我想升级它以便能够使用jQuery选择器(
$(this).parent().find("blah")
),但是它需要能够使用原始方法来向后兼容。有没有办法我可以测试传递给函数的参数是一个字符串(所以我可以使用
getElementById
)或jQuery对象(不是字符串)。 我可以使用
.length
,但这是一种确定参数是否为字符串的故障保护方法吗? 只要我可以测试字符串,jQuery分支就可以进入
else
- 我不需要确定它不是字符串,尽管测试它是否也是jQuery会很好。 谢谢, 詹姆士     
已邀请:
Object.prototype.toString.call(your_argument) == "[object String]"
    
以下代码返回true:
"somestring".constructor == String
    
这就是你要追求的吗?
var str = "blah";
if (typeof str == "string") {

} else {


}
并且
length
绝对不是要走的路。数组也有一个length属性,更不用说任何自定义对象了。     
我认为instanceOf就是你要找的东西。看到这篇文章:JavaScript中的instanceof运算符是什么?     
JavaScript有两种字符串。这会检查两种类型。
function isString (str)
{
  return str instanceof String || typeof str === 'string';
}
如果参数未声明,这将总是一个
ReferenceError
,尽管
typeof
不会引发错误,因为JavaScript从左到右进行评估(参见短路评估)。     

要回复问题请先登录注册