2

我有一个这样的原型;

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原型中的参数是对象数组还是对象?

4

3 回答 3

4

您可以使用instanceof

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

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

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

有关其他解决方案,请参阅 thg435 链接的重复问题。

于 2013-05-27T11:02:59.193 回答
2

像这样:

if (query instanceof Array) {
    return 'array';
} else if (query instanceof Object) {
    return 'object';
} else {
    return 'scalar';
}
于 2013-05-27T11:03:28.573 回答
2
if( Object.prototype.toString.call( yourObj) === '[object Array]' ) {
    alert( 'Array!' );
}
于 2013-05-27T11:03:40.697 回答