如何确定参数是JavaScript中的数组还是对象?

时间:2013-05-27 11:01:05

标签: javascript

我有这样的原型;

LocalDataEngine.prototype.ExecuteNonQuery = function (query) { }

我将这个原型称为两个不同的论点,如下所示;

使用对象数组;

var createQueries = new Array();
createQueries.push(new SQLiteQuery(""));
createQueries.push(new SQLiteQuery(""));
createQueries.push(new SQLiteQuery(""));

new LocalDataEngine().ExecuteNonQuery(createQueries);

仅使用对象;

new LocalDataEngine().ExecuteNonQuery(new SQLiteQuery(""));

我的问题是,我怎样才能确定原型中的query参数是对象数组还是对象?

3 个答案:

答案 0 :(得分:4)

您可以使用instanceof

% js
> [] instanceof Array
true
> {} instanceof Array
false

如果你不使用框架(无论如何这可能是一个坏主意),它将完美地工作。如果您使用的是框架和ECMAScript 5,请使用Array.isArray

> Array.isArray({})
false
> Array.isArray([])
true

请参阅由thg435链接的重复问题以获取其他解决方案。

答案 1 :(得分:2)

像这样:

if (query instanceof Array) {
    return 'array';
} else if (query instanceof Object) {
    return 'object';
} else {
    return 'scalar';
}

答案 2 :(得分:2)

if( Object.prototype.toString.call( yourObj) === '[object Array]' ) {
    alert( 'Array!' );
}