変数を確認したいのですが、それは配列ですか?
これは、パフォーマンスを向上させるために使用される最良の方法です。
isArray
また
instanceof
大物(Jquery、アンダースコア)は次のようにします:
isArray = Array.isArray || function(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
};
しかし、これらはあなたが探しているドロイドではありません。実際にはこれはまったく必要ありません。変数を「チェック」しないでください。変数を知っているだけです。
Array.IsArray を使用することをお勧めします。
また、これinstanceof
が有害であると見なされていることを確認してください(または、堅牢な の書き方isArray
)
マルチフレーム DOM 環境でのスクリプト作成に関しては、問題が発生します。簡単に言えば、1 つの iframe 内で作成された Array オブジェクトは、[[Prototype]] を別の iframe 内で作成された配列と共有しません。それらのコンストラクターは異なるオブジェクトであるため、instanceof チェックとコンストラクター チェックの両方が失敗します。
また、2 つの速度の違いを確認すると、isArray の方が比較的高速であることがわかります。
これを確認するためのリンクは次のとおりです。- Array.isArray と instanceof Array の比較
以下のコードは、速度変動をチェックするために使用されます。
<script>
Benchmark.prototype.setup = function() {
var a = [1, 2, 3];
var s = 'example';
var f = false;
};
</script>
Array.IsArray の使用:
(Array.isArray(a) && (Array.isArray(s) || Array.isArray(f)));
約25,255,693 オペレーション/秒を実行しました
instanceof を使用するようになりました:-
(a instanceof Array && (s instanceof Array || f instanceof Array));
約21,594,618 ops/秒を実行しました
つまり、instanceOf は IsArray を使用するよりも 15% 遅くなります。