主要なライブラリの処理を見てみましょう:
//jQuery的makeArray var makeArray = function( array ) { var ret = []; if( array != null ){ var i = array.length; // The window, strings (and functions) also have 'length' if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval ) ret[0] = array; else while( i ) ret[--i] = array[i]; } return ret; }
jQuery オブジェクトは、dom 要素の保存と処理に主に setArray メソッドに依存して、長さとインデックス、およびパラメータ要件を設定および維持します。 setArray は配列であるため、makeArray のステータスは非常に重要です。このメソッドは、パラメーターがない場合でも空の配列を返すことが保証されています。
Prototype.js の $A メソッド
function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }
mootools の $A メソッド
function $A(iterable){ if (iterable.item){ var l = iterable.length, array = new Array(l); while (l--) array[l] = iterable[l]; return array; } return Array.prototype.slice.call(iterable); };
Ext の toArray メソッド
var toArray = function(){ return isIE ? function(a, i, j, res){ res = []; Ext.each(a, function(v) { res.push(v); }); return res.slice(i || 0, j || res.length); } : function(a, i, j){ return Array.prototype.slice.call(a, i || 0, j || a.length); } }()
Ext は、より巧妙に設計されており、より強力です。最初から自動的に実行されるため、今後ブラウザを判断する必要がありません。また、結果として得られる純粋な配列を操作する 2 つのオプションのパラメーターもあります。
最後に、Dojo の _toArray を見てみましょう。Dojo の実装は常に非常に奇妙です。 Ext と同様、最後の 2 つのパラメータはオプションですが、2 番目のパラメータはオフセットで、最後のパラメータは既存の配列で、新しいグループ要素をマージするために使用されます。
以上がJavaScript クラス ライブラリがクラス オブジェクトを配列オブジェクトに変換する方法の詳細なコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。