JavaScriptオブジェクト配列メソッドの使い方を詳しく解説_JavaScriptスキル

WBOY
リリース: 2016-05-16 17:47:31
オリジナル
966 人が閲覧しました
Array.prototype.push
push は配列の末尾に項目を追加し、長さを更新して配列の長さを返します。
オブジェクトがプッシュを使用するとどうなりますか?
以下のコードを見てください。obj は配列のように機能します。長さは自動的に更新されます。
コードをコピー コードは次のとおりです。

var Push = Array.prototype.push;
var obj = {};
push.call(obj, "hello"); // 戻り値 1
// obj {"0":"hello", length:0}
Push.call (obj, "world"); // 戻り値 2
// obj {"0":"hello", "1":"world",length:2}

Array .prototype.length Array.prototype.splice
オブジェクトに長さと結合を与えます
次のコードを見てください: Obj は実際に配列になりますか?実際、そうでない場合、これはデバッグ ツールの出力チェックの問題である可能性があります。
obj をテストするには、instanceof を使用します。 array of Array //false
var obj = { length:0, splice:Array.prototype.splice};console.log( obj ); // Print: []

引き続き次のコードを見てください:
obj.push(0)//Return obj.length
1obj.push(1)//Return obj.length
2obj.splice (0, 1);//最初の項目を削除し、削除された項目を返します
[0]obj.length // 1 つのスプライスは、項目を削除するときに長さ属性
も更新します。 objのはarrayとほぼ同じです。当然のことですが、スライス、ポップ、シフト、シフト解除などはすべてオブジェクト内で正常に動作します。
ただし、length を直接設定した場合、以下の表の length を超える項目は配列から削除されますが、内部の obj は更新されません。

どこに適用されますか?
jQuery オブジェクトは配列のように動作しますが、実際にはオブジェクトです。この種のオブジェクトを新しくするにはどうすればよいでしょうか?
実際、jQuery は、この jQuery オブジェクトの効果を実現するために、Array メソッドを Object に提供します。push などの Array メソッドも、jQuery オブジェクト内で直接使用されます。
jQuery のソース コードの一部を見てください (太字に注意してください)
コードをコピーします コードは次のとおりです。

// 空のセレクターから開始します
selector: "",
// 使用されている jQuery の現在のバージョン
jquery: "1.7.1",
// jQuery オブジェクトのデフォルトの長さは 0 です。
length: 0,
....
// 内部使用のみ
// 配列のメソッドのように動作します。 jQuery メソッド。
Push: Push、
sort: [].sort、
splice: [].splice

オブジェクトを配列として再生したい場合は、これは、長さ属性が「配列」項目の合計に対応しないという潜在的な問題である可能性があります。
そのため、長さを直接使用して長さを設定することはサポートされません。

以下の jquery コードを見てください。長さは更新されていますが、jquery オブジェクトは更新されていません。 (もちろん、これは jquery の問題ではありません)
var jq = $('div') // ページ上で 40
divjq.length を取得したとします。 // 40
jq.length = 0; jq //? jq にはまだ 40 個の dom オブジェクトが保存されており、長さ属性は「配列」項目の合計に対応しません。
オブジェクトの配列を使用するメソッドはまだ正常に動作しますが、これは少し予想外です。実際のアプリケーションはこれよりもはるかに優れている可能性があります。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート