我有一个使用document.getElementById()
的JavaScript函数。我想升级它以便能够使用jQuery选择器($(this).parent().find("blah")
),但是它需要能够使用原始方法来实现向后兼容性。有没有办法可以测试传递给函数的参数是否为字符串(因此我可以使用getElementById
)或jQuery对象(不是字符串)。
我可以使用.length
,但这是一种确定参数是否为字符串的故障保护方法吗?
只要我可以测试字符串,jQuery分支就可以进入else
- 我不需要确定它不是字符串,尽管测试它是否是jQuery会很好太
谢谢,
詹姆斯
答案 0 :(得分:4)
以下代码返回true:
"somestring".constructor == String
答案 1 :(得分:3)
Object.prototype.toString.call(your_argument) == "[object String]"
答案 2 :(得分:2)
这就是你要追求的吗?
var str = "blah";
if (typeof str == "string") {
} else {
}
并且length
绝对不是要走的路。数组也有一个长度属性,更不用说任何自定义对象了。
答案 3 :(得分:0)
我认为instanceOf就是你要找的东西。请参阅此帖子:What is the instanceof operator in JavaScript?
答案 4 :(得分:0)
JavaScript有两种字符串。这会检查两种类型。
function isString (str)
{
return str instanceof String || typeof str === 'string';
}
这将始终为ReferenceError
,如果参数未声明,尽管typeof
不会引发错误,因为JavaScript从左到右进行评估(请参阅Short-circuit evaluation)。