我想创建可以与 Id 或通过传递 jQuery 对象一起使用的函数。
var $myVar = $('#myId');
myFunc($myVar);
myFunc('myId');
function myFunc(value)
{
// check if value is jQuery or string
}
如何检测传递给函数的参数类型?
笔记! 这个问题不一样。我不想传递选择器字符串,例如#id.myClass
. 我想像示例中一样传递 jQuery 对象。
我想创建可以与 Id 或通过传递 jQuery 对象一起使用的函数。
var $myVar = $('#myId');
myFunc($myVar);
myFunc('myId');
function myFunc(value)
{
// check if value is jQuery or string
}
如何检测传递给函数的参数类型?
笔记! 这个问题不一样。我不想传递选择器字符串,例如#id.myClass
. 我想像示例中一样传递 jQuery 对象。
使用typeof
运算符
if ( typeof value === 'string' ) {
// it's a string
} else {
// it's something else
}
或者确保它是 jQuery 对象的一个实例
if ( typeof value === 'string' ) {
// it's a string
} else if ( value instanceof $) {
// it's a jQuery object
} else {
// something unwanted
}
每个 jquery 对象都有一个属性jquery
。当然,如果您的对象具有jquery
属性,这将失败......但如果您愿意,您可以进行更严格的检查......
function(o) {
if(typeof o == 'object' && o.jquery) // it's jquery object.
}
function myFunc(value)
{
if (typeof value == "string") {
//it's a string
}
else if (value != null && typeof value == "object"} {
//it's an object (presumably jQuery object)
}
else {
//it's null or something else
}
}
检查参数的类型还不够吗?
function myfunc(arg)
{
if(typeof arg == 'string')
{
}
else if(typeof arg == 'object')
{
}
}
检查这个小提琴。
尝试这个:
function myFunc(value)
{
if(typeof value === 'object') {
}
else{
}
}
function myFunc(value)
{
if(typeof(value) == 'string')
//this is a string
else if (value === jQuery)
//this is jQuery
else if (typeof(value) == 'object')
//this is an object
}
注意:在控制台中执行此操作:
> jQuery
function (a,b){return new e.fn.init(a,b,h)}
> var value = jQuery
undefined
> value
function (a,b){return new e.fn.init(a,b,h)}
> value === jQuery
true
尝试使用 typeof,例如:
var $myVar = $('#myId');
myFunc($myVar);
myFunc('myId');
function myFunc( value ){
// check if value is jQuery or string
switch( typeof value ) {
case 'object':
// is object
break;
case 'string':
// is string
break;
// etc etc.
}
}