如何在javascript中区分对象和字符串之间的区别?

时间:2011-08-12 11:45:24

标签: javascript jquery

我有一个javscript函数(实际上是一个jQuery插件),我想把它称为

myFunction("some input");

myFunction({ "prop": "value 1", "prop2": "value2" });

我如何在功能中将两者分开?

换句话说,下面的if条件应该包含哪些内容?

if (/* the input is a string */)
{
    // Handle string case (first of above)
}
else if (/* the input is an object */)
{
    // Handle object case (second of above)
}
else
{
    // Handle invalid input format
}

我可以使用jQuery。

更新:如答案中所述,如果输入为new String('some string'),则typeof(input)将返回'object'。如何测试new String(''),以便我可以像''一样处理?

9 个答案:

答案 0 :(得分:30)

if( typeof input === 'string' ) {
    // input is a string
}
else if( typeof input === 'object' ) {
    // input is an object
}
else {
    // input is something else
}

请注意,typeof也会将数组和null视为对象:

typeof null === 'object'
typeof [ 1, 2 ] === 'object'

如果区别很重要(您只想要“实际”对象):

if( typeof input === 'string' ) {
    // input is a string
}
else if( input && typeof input === 'object' && !( input instanceof Array ) ) {
    // input is an object
}
else {
    // input is something else
}

答案 1 :(得分:12)

jQuery.type可能会对您感兴趣。

if($.type(input)==='string')
{
   //it's a string
}

答案 2 :(得分:4)

正如其他人所说,typeof运算符将确定变量的类型。

请注意:

var str = 'A String' ;
var obj = new String(str) ;
console.log(typeof str) ;
console.log(typeof obj) ;

// Outputs:
// string
// object

答案 3 :(得分:3)

typeof运营商可以为您提供所需的服务。即:

typeof(myobj) == 'string'

(这个)

答案 4 :(得分:2)

你可以;

function f(a) { print(typeof a) }

f({"prop": "value 1", "prop2": "value2" });

>>object

f("Some input");

>>string

答案 5 :(得分:0)

在javascript中,命令typeof返回变量的类型。

我创建了一个小jsfiddle似乎数组也返回typeof作为对象。

答案 6 :(得分:0)

<script>
var a = {'a':'b'};
if(typeof(a) == 'object'){
    alert('object');
}
elseif(typeof(a) == 'string'){
    alert('string');
}
</script>

http://forums.devx.com/showthread.php?t=5280

答案 7 :(得分:0)

您可以使用typeof功能:

if (typeof(myvar) === 'string') {
  // the code
}

有关详细信息,请参阅here

答案 8 :(得分:0)

您想使用$.type,因为这比typeof

更准确
$.fn.plugin = function( options ) {

    console.log( $.type( options ) );

    if( $.type( options ) == 'string' ) {
        // Handle string case (first of above)
    }
    else if( $.type( options ) == 'object' && options != null ) {
        // Handle object case (second of above)
    }
    else {
        // Handle invalid input format

    }

};

$("#d1").plugin( new String('test')); //string
$("#d1").plugin('test'); //string
$("#d1").plugin({'key' : 'value'}); //object

演示here

修改

此外,如果未设置选项,则!options就足够了