我有一个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('')
,以便我可以像''
一样处理?
答案 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>
答案 7 :(得分:0)
答案 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
就足够了