2

このようなプロトタイプがあります。

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

そして、以下のように 2 つの異なる引数内でこのプロトタイプを呼び出します。

オブジェクト配列を使用する。

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 に答える