ホームページ >ウェブフロントエンド >jsチュートリアル >オブジェクトと配列の詳細な JavaScript 高度なプログラミング (スタック メソッド、キュー メソッド、並べ替えメソッド、反復メソッド)_JavaScript スキル
継承は、OO 言語で最も話題になっている概念の 1 つです。 多くの OO 言語は、インターフェイスの継承と実装の継承という 2 種類の継承をサポートしています。 インターフェイスの継承はメソッドの署名のみを継承しますが、実装の継承は実際のメソッドを継承します。 前述したように、関数には署名がないため、ECMAScript ではインターフェイスの継承は不可能です。 ECMAScript は実装の継承のみをサポートしており、その実装の継承は主にプロトタイプ チェーンに依存します。
1. オブジェクト リテラルを使用してオブジェクト
を定義しますvar person={};
この方法でオブジェクトを作成する場合、Object コンストラクターは実際には呼び出されません。
開発者はオブジェクト リテラル構文を好みます。
2. 場合によっては、多数のオプションのパラメーターを渡す必要がある場合、一般的に、複数のオプションのパラメーターをカプセル化するためにオブジェクト リテラルが使用されます。
3. オブジェクト属性のドット表記と角括弧表記の違い
(1) 機能的に: 2 つに違いはありません
(2) ただし、角括弧の利点は、変数
を通じて属性にアクセスできることです。例:
var person={ name:"Nic" }
ドット表記: person.name
角かっこ表記: var prop="name";
人[小道具]
(3) もう 1 つの利点は次のとおりです:
属性名に文法エラーや予約語を引き起こす文字やキーワードが含まれている場合、角括弧を使用しても問題ありません
例: person["first name"]="OK";
(4) 一般的にはドット表記を使用することをお勧めします
4. 配列の作成に関する問題
var Colors=[1,2,] //これは行わないでください。これにより、2 つまたは 3 つの項目を含む配列が作成されます
var opy=[,,,,,] //これは行わないでください。これにより、5 つまたは 6 つの項目の配列が作成されます
これは、IE8 およびそれ以前のバージョンには配列リテラルの実装にバグがあるためです
リテラルを使用して配列を作成する場合、Array コンストラクターは呼び出されません
5. 特定の値を設定するインデックスが配列内の既存の項目数を超える場合。
例: var color=[1,2,3]
color[3]、配列はインデックス値に 1 を加えた長さまで自動的に増加します
現時点では、color[3]の値は未定義です
6. 配列の長さは読み取り専用だけではありません。 length プロパティを設定すると、配列の末尾に新しい項目を継続的に追加できます。
7. 配列を文字列に変換 toString() join()
array.toString() //返回以逗号分隔的字符串 array.valueOf() //返回的还是数组 array.join(",") //也可以
8. 配列スタックメソッド Push() Pop()
スタックはデータ構造です。つまり、最後に追加された項目が最も早く削除されます (後入れ先出し)。スタックへの項目の挿入とスタックからの削除は、スタックの最上部という 1 つの場所でのみ行われます。
ECMAScript は、この種のスタックを実装するための Push() メソッドと Pop() メソッドを提供します。
push() メソッドは、1 つ以上の要素を配列の末尾に追加し、新しい長さを返します。
pop() メソッドは、配列の最後の要素を削除して返します。
例:
var arr=[]; var count=arr.push('a','b'); //count=2 arr.push('c'); var item=arr.pop(); //移除最后一项 c item=c 并且改变数组长度
9. キューメソッドshift() unshift()
キュー データのアクセス ルールは先入れ先出しです
ECMAScript は、これを実装するためにshift()を提供します。
SHIFT() メソッドは、配列から最初の要素を削除し、最初の要素の値を返すために使用されます。
unshift() メソッドは、配列の先頭に 1 つ以上の要素を追加し、新しい長さを返します。
10. メソッドsort() reverse()
ECMAScript は実装用に sort() と reverse() を提供します。
sort() は、各配列項目の tostring() メソッドを呼び出し、結果の文字列を比較して並べ替えます。
11. 配列の連結 concat()
concat() メソッドは、2 つ以上の配列を連結するために使用されます。
このメソッドは既存の配列を変更せず、接続された配列のコピーのみを返します。
12.slice() メソッドは、既存の配列から選択された要素を返します。
13. 位置メソッド:indexOf() および lastIndexOf()
14. 反復法
ECMAScript5 は、次の 5 つのメソッドを定義します。これらはすべて、配列項目の値、配列内の項目の位置、配列ペア自体の 3 つのパラメーターを受け取ります
every(),filter(),forEach(),map(),some()
例:
var num=[1,2,3,4]; var res=num.every(function(item,index,array){ return (item>2) }) //false 必须每一项都大于2,才返回true var res=num.some(function(item,index,array){ return (item>2) }) //true 只要有一个大于2,就返回true var res=num.filter(function(item,index,array){ return (item>2) }) //[3,4] var res=num.forEach(function(item,index,array){ return (item>2) }) //[1,4,9,16]
JavaScript 配列オブジェクトの反復メソッド
/* javascript 数组对象中的迭代方法 * ECMAScript5为数组定义了5个迭代方法。每个方法都接受两个参数,第一个是进行迭代的函数,第二个是该函数的作用域对象【可选】。 * 进行迭代的函数接受三个参数,第一个是数组中要进行迭代的元素的值,第二个是数组候总要进行迭代的元素的位置,第三个是迭代数组本身。 * 1. every() 对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则返回true * 2. filter() 对数组中的每一项运行给定的函数,返回该函数返回true的项组成的数组。 * 3. forEach() 对数组中的每一项运行给定的函数,这个方法没有返回值 * 4. map() 对数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组 * 5. some() 对数组中的每一项运行给定的函数,如果该函数对任意一项返回true,则返回true * * 这些迭代方法支持的浏览器有,IE9+,Firefox2+,Safari3+,Opera 9.5+,chrome */ var num = [1,2,3,4,5,6,7,8,9]; var everyResult = num.every(function(item, index, array) { if(item > 2) { return true; } }); alert(everyResult); var someResult = num.some(function(item) { if(item > 2) { return true; } }); alert(someResult); var filterResult = num.filter(function(item) { if(item > 2) { return true; } }); alert(filterResult); var mapResult = num.map(function(item) { if(item > 2) { return true; } }); alert(mapResult); var forEachResult = num.forEach(function(item) { if(item > 2) { return true; } }); alert(forEachResult);