1

我有一个 JavaScript 函数,它使用document.getElementById(). 我想升级它以便能够使用 jQuery 选择器 ( $(this).parent().find("blah")),但是它需要能够使用原始方法以实现向后兼容性。有没有一种方法可以测试传递给函数的参数是字符串(所以我可以使用getElementById)还是 jQuery 对象(不是字符串)。

我可以使用.length,但这是确定参数是否为字符串的故障安全方法吗?

只要我可以测试字符串,jQuery 分支就可以进入else- 我不需要绝对确定它不是字符串,尽管测试它是否也是 jQuery 会很好。

谢谢,

詹姆士

4

5 回答 5

4

以下代码返回 true:

"somestring".constructor == String
于 2010-12-11T10:52:04.803 回答
3
Object.prototype.toString.call(your_argument) == "[object String]"
于 2010-12-11T10:52:02.523 回答
2

这就是你所追求的吗?

var str = "blah";
if (typeof str == "string") {

} else {


}

而且length绝对不是要走的路。数组也将具有长度属性,更不用说任何自定义对象也可以。

于 2010-12-11T10:56:11.140 回答
0

我认为 instanceOf 是您正在寻找的。请参阅这篇文章:JavaScript 中的 instanceof 运算符是什么?

于 2010-12-11T10:52:02.293 回答
0

JavaScript 有两种字符串。这会检查这两种类型。

function isString (str)
{
  return str instanceof String || typeof str === 'string';
}

如果参数未声明,这将始终抛出 a ReferenceError,尽管typeof不会抛出错误,因为 JavaScript 从左到右进行评估(请参阅短路评估)。

于 2017-12-01T09:38:17.083 回答