JavaScriptオブジェクトパーツ
1:基本部分
1. JavaScriptのすべての変数はオブジェクトであり、2つの例外が無効で未定義です。
2.JScriptは、4つのタイプのオブジェクトをサポートします。内部オブジェクト、生成されたオブジェクト、ホストギブンオブジェクト(すべてのBOMおよびDOMオブジェクトはホストオブジェクトです。)、およびActiveXオブジェクト(外部コンポーネント)。
3。MicrosoftJScriptは、11の内部(または「組み込み」)オブジェクトを提供します。それらは、配列、ブール、日付、関数、グローバル、数学、数字、オブジェクト、regexp、エラー、および文字列オブジェクトです。
4。オブジェクトは単なる特別なデータです。オブジェクトにはプロパティとメソッドがあります。 JavaScriptはオブジェクト指向の言語ですが、JavaScriptはクラスを使用しません。 JavaScriptは、クラスベースではなく、プロトタイプに基づいています。
5。属性:特定のオブジェクトに関連する可変可変です。方法:これは、特定のオブジェクトによってのみ呼び出される機能です。
6。JScriptオブジェクトは、プロパティとメソッドのコレクションです。メソッドは関数であり、オブジェクトのメンバーです。属性は、オブジェクトのメンバーである値または値のセット(配列またはオブジェクトの形式)です。
7。JavaScriptオブジェクトは、コンストラクター関数に基づいています。コンストラクター関数を使用して新しいオブジェクトを作成する場合、新しいオブジェクトがインスタンス化されていると言えます。プロパティは、コンストラクター関数内の変数です。
コンストラクター関数を使用してインスタンス化されたオブジェクト:
cat = new Animal();
8。JavaScriptはオブジェクトベースの言語であり、遭遇するほとんどすべてがオブジェクトです。ただし、構文にクラス(クラス)がないため、真のオブジェクト指向プログラミング(OOP)言語ではありません。
コードコピーは次のとおりです。
<script type = "text/javascript">
//オブジェクトは、名前/値のペアのコレクションです
var browser = {//オブジェクトはカーリーブレースに囲まれています
名前:「Firefox」、
カーネル:「Gecko」
};
</script>
コードコピーは次のとおりです。
//ドット(。)または「[]」を介してオブジェクトのプロパティにアクセスします
browser.name // "firefox"
ブラウザ["kernel"] // "gecko"
オブジェクト(OBJCT)はプロパティのコレクションであり、各プロパティは「名前/値ペア」で構成されています。 JSは、番号付き値の順序付けられたセットである特別なオブジェクト - アレイも定義します。 JSは特別なオブジェクトを定義します - 関数、関数はそれに関連付けられた実行可能コードを持つオブジェクトです。関数を呼び出してコードを実行し、操作結果を返します。
概念を明確にする:
JS 4には「オブジェクトベース=オブジェクト指向」。JSにはクラス(クラス)はありませんが、「プロトタイプオブジェクト」と呼ばれる新しい名前を取得するため、「class =プロトタイプオブジェクト」
2:クラス(プロトタイプオブジェクト)とオブジェクト(インスタンス)の違いと接続###
1。クラス(プロトタイプオブジェクト)は、概念的で、概念的であり、タイプのものを表しています。
2。オブジェクトは具体的で実用的で、特定のものを表します。
3。クラス(プロトタイプオブジェクト)はオブジェクトインスタンスのテンプレートであり、オブジェクトインスタンスはクラスの個人です。
一般的な誤解は、数字の文字通りの値はオブジェクトではないということです。これは、フローティングポイント数値額面の一部としてポイント演算子を解析しようとするJavaScriptパーサーのバグのためです。
数字のリテラル値をオブジェクトのように見せるための多くの回避策があります。
2..toString(); // 2番目のドットは正常に解析できます
2.ToString(); //ドットの前のスペースに注意を払ってください
(2).toString(); // 2が最初に計算されます
属性を削除します
プロパティを削除する唯一の方法は、削除演算子を使用することです。プロパティを未定義またはnullに設定しても、実際にはプロパティを削除しませんが、プロパティと値の間の関連性を削除するだけです。
JavaScriptオブジェクト指向の3つの主要な機能
カプセル化:内部実装は考慮されず、機能的使用のみが考慮されます
継承:既存のオブジェクトから新しいオブジェクトを継承します
多型:いわゆる多型とは、異なる状況で言及する複数の状態を指します。
1。パッケージ
カプセル化とは、同じカテゴリに属するものの共通性(属性と行動を含む)を、使いやすいためにクラスにグループ化することを意味します。たとえば、人間は次の方法でカプセル化できます。
人々{
年齢(属性1)
高さ(属性2)
性別(属性3)
物事を行う(行動の1つ)
ウォーキング(行動2)
話す(第3幕)
}
カプセル化の利点:
カプセル化は、内部データの整合性を保護します。
カプセル化により、オブジェクトのリファクタリングが簡単になります。
モジュール間の結合を弱め、オブジェクトの再利用性を改善します。
名前空間の競合を回避するのに役立ちます。
次の例を参照してください。
コードコピーは次のとおりです。
<script type = "text/javascript">
var boy = {}; //空のオブジェクトを作成します
boy.name = "xiao ming"; //プロトタイプオブジェクトのプロパティに従って値を割り当てます
boy.age = 12;
var girl = {};
girl.name = "xiaohong";
girl.age = 10;
</script>
これは、1つのオブジェクトに2つの属性をカプセル化する最も単純なカプセル化です。ただし、この執筆方法には2つの欠点があります。 1つは、より多くのインスタンスを生成する場合、書くのは非常に厄介なことです。もう1つは、インスタンスとプロトタイプの間に接続があるかどうかを判断する方法がないということです。
コンストラクターモード
プロトタイプオブジェクトからインスタンスを生成する問題を解決するために、JavaScriptはコンストラクターパターンを提供します。
いわゆる「コンストラクター」は実際には通常の関数ですが、この変数は内部で使用されます。コンストラクターに新しい演算子を使用すると、インスタンスを生成でき、この変数はインスタンスオブジェクトにバインドされます。
たとえば、男の子と女の子のプロトタイプオブジェクトは今、このように書くことができます:
コードコピーは次のとおりです。
<script type = "text/javascript">
関数担当者(名前、年齢){
this.name = name;
this.age = age;
}
</script>
インスタンスオブジェクトを生成できるようになりました。
コードコピーは次のとおりです。
<script type = "text/javascript">
var boy = new person( "xiao ming"、 "12");
var girl = new Person( "Xiaohong"、 "10");
アラート(boy.name); // Xiao Ming
アラート(boy.age); // 12
</script>
現時点では、男の子と女の子は、コンストラクターを指すコンストラクター属性を自動的に含みます。
コードコピーは次のとおりです。
アラート(boy.constructor == person); //真実
alert(girl.constructor == person); //真実
プロトタイプパターンJavaScriptは、各コンストラクターが別のオブジェクトを指すプロトタイプ属性を持っていることを規定しています。このオブジェクトのすべてのプロパティとメソッドは、コンストラクターインスタンスによって継承されます。
これは、プロトタイプオブジェクト上のこれらの変更されていないプロパティとメソッドを直接定義できることを意味します。
コードコピーは次のとおりです。
<script type = "text/javascript">
関数担当者(名前、年齢){
this.name = name;
this.age = age;
}
person.protype.type = "Human";
person.protype.eat = function(){
アラート(「イートライス」);
}
</script>
次に、インスタンスを生成します。
コードコピーは次のとおりです。
<script type = "text/javascript">
var boy = new person( "xiao ming"、 "12");
var girl = new Person( "Xiaohong"、 "10");
アラート(boy.type); // human
boy.eat(); // eat
</script>
現時点では、すべてのインスタンスの型属性とEAT()メソッドは、実際にはプロトタイプオブジェクトを指しているメモリアドレスと同じであるため、動作効率が向上します。
alert(boy.eat == girl.eat); //真実
プロトタイププロパティは、オブジェクトが拡張するコンストラクター関数を指定する組み込みプロパティです。
次のコードは、CATオブジェクトのプロトタイプ属性である動物コンストラクター機能に新しい属性サイズを追加します。プロトタイプのプロパティを使用することにより、動物コンストラクター機能を拡張するすべてのオブジェクトはサイズプロパティにアクセスできます
cat = new Animal( "ネコ"、 "emow"、 "walk/run");
cat.prototype.size = "fat";
この場合、すべての動物オブジェクトのサイズ属性は「脂肪」です。プロトタイプはデフォルトでオブジェクトの新しいインスタンスになります。まだオブジェクトであるため、新しい属性をオブジェクトに追加できます。スタイルがJavaScriptのオブジェクトであるように、スタイル後にプロパティを追加し続けることもできます。
コードコピーは次のとおりです。
<script type = "text/javascript">
/*人のクラスを定義する*/
function person(_name、_age、_salary){
//個人クラスのパブリック属性、クラスのパブリック属性は次のように定義されています。
this.name = _name;
// Person Classのプライベート属性、クラスのプライベート属性は次のように定義されています:「var属性名」
var age = _age;
var salary = _salary;
//人クラスのパブリックメソッド(特権方法)、クラスのパブリックメソッドの定義を定義します
はい:「this.functionname = function(){......}」
this.show = function(){
alert( "age ="+age+"/t"+"salary ="+salary); //パブリック方法でクラスの私有財産へのアクセスが許可されています
}
</script>
オブジェクトが特定のプロパティを探すと、最初に独自のプロパティを通過します。そうでない場合は、[[プロトタイプ]]によって参照されるオブジェクトを探し続けます。そうでない場合、[[プロトタイプ]]。[[プロトタイプ]]によって参照されるオブジェクトを探し続けます。
簡単に言えば、オブジェクトの[[プロトタイプ]]を介して別のオブジェクトへの参照を保存し、このリファレンスを介して属性を検索することです。これがプロトタイプチェーンです。
グローバルウィンドウオブジェクト
JavaScriptのグローバル関数または変数は、ウィンドウのプロパティです。
自己オブジェクトは、ウィンドウオブジェクトとまったく同じです。自己は通常、それが現在の形式であることを確認するために使用されます。
ウィンドウの主な主なオブジェクトは次のとおりです。
JavaScriptドキュメントオブジェクト
JavaScriptフレームオブジェクト
JavaScript Historyオブジェクト
JavaScriptロケーションオブジェクト
JavaScriptナビゲーターオブジェクト
JavaScript画面オブジェクト
いくつかの一般的な方法
valueof()メソッド:指定されたオブジェクトの元の値を返します
split()メソッドは、文字列を文字列アレイに分割し、この配列を返します。
indexOF()メソッドは、文字列内の指定された文字列値の最初の発生を返します。
Substring()メソッドは、指定された2つの添え字の間に文字列内の文字を抽出するために使用されます。
substr()メソッドは、文字列からStartpos位置から始まる指定された文字列の数を抽出します。
Join()メソッドは、配列内のすべての要素を文字列に入れるために使用されます。
arrayobject.join(delimiter)
逆()メソッドは、配列内の要素の順序を逆にするために使用されます。
Slice()メソッドは、既存の配列から選択した要素を返します。
オブジェクトリテラル
オブジェクトリテラルは、多数の属性を作成するために使用されるプロセスです。
コードコピーは次のとおりです。
<script type = "text/javascript">
var company = {
名前:「Microsoft」、
年齢:39、
従業員:99000、
CEO:「ナデラ」
};
</script>
ここでは、属性と属性値がコロン(:)によって区切られていることに注意する必要があります。複数の属性は、コンマ(、)で区切られています。リテラルオブジェクトは、メソッドを定義することもできます。このオブジェクトの属性に関数を書き込むだけです。これは匿名の関数です。それを呼び出すには、そのメソッド名()を記述するだけです。
コードコピーは次のとおりです。
<script type = "text/javascript">
var dog = {
名前:「ハスキー」、
年齢:2、
実行:function(){
「123」を返します。
}
}
alert(dog.run()); // dog.runを入力すると、関数パーツのコードがポップアップした後
</script>
JavaScriptアレイパーツ
1.アレイオブジェクト
配列オブジェクト:任意のデータ型の配列を作成するためのサポートを提供します。
コードコピーは次のとおりです。
arrayobj = new array()
arrayobj = new Array([size])
arrayobj = new array([element0 [、ement1 [、...]]]]))
定義:var arr = [2,3,45,6]; var arr = new Array(2,4,5,7)
2つの定義に違いはありません。[]コードが短いため、[]は高性能です。
配列とオブジェクトのリテラルを使用します:var atest = [];配列を作成する場合、配列リテラルを使用することが適切です。同様に、オブジェクトリテラルを使用してスペースを節約することもできます。次の2つの行は等しいが、オブジェクトリテラルを使用して短くする:
var otest = new Object; //それを使用しないようにしてください
var otest = {}; //最良の選択、またはvar 0test = [];
トラバーサルトラバースアレイの最高のパフォーマンスを実現するには、ループにクラシックを使用することをお勧めします。
コードコピーは次のとおりです。
var list = [1、2、3、4、5、...... 100000000];
for(var i = 0、l = list.length; i <l; i ++){
console.log(list [i]);
}
上記のコードには、l = list.lengthを介して配列の長さをキャッシュする処理があります。
アレイコンストラクター
アレイのコンストラクターは、引数を処理する方法に関しては少し曖昧であるため、配列のリテラル構文を使用して配列を作成することを常にお勧めします。
したがって、次のコードは混乱します。
新しい配列(3、4、5); //結果:[3、4、5]
新しい配列(3)// result:[]、この配列の長さは3です
アレイコンストラクターを使用して新しい配列を作成しないようにしてください。アレイの文字通りの構文を使用することをお勧めします。それらはより短く、より簡潔であるため、コードの読みやすさが向上します。
配列アレイのプロパティ
3アレイ配列のプロパティ:長さ属性、プロトタイプ属性、コンストラクター属性
1.長さの属性
長さの属性は、配列の長さ、つまりその中の要素の数を表します。配列のインデックスは常に0から始まるため、配列の上限と下限はそれぞれ:それぞれ長さ1です。他のほとんどの言語とは異なり、JavaScriptアレイの長さ特性は可変であり、特に注意が必要です。
2.プロトタイプ属性
オブジェクトタイプのプロトタイプへの参照を返します。プロトタイプ属性はオブジェクトに共通しています。
配列配列オブジェクトについては、次の例を使用して、プロトタイプ属性の目的を示します。
配列オブジェクトにメソッドを追加して、配列の最大要素値を返します。これを達成するには、関数を宣言し、array.prototypeに追加して使用します。
コードコピーは次のとおりです。
function array_max()
{
var i、max = this [0];
for(i = 1; i <this.length; i ++)
{
if(max <this [i])
max = this [i];
}
MAXを返します。
}
array.prototype.max = array_max;
var x = new Array(1,2,3,4,5,6);
var y = x.max();
このコードが実行された後、yは配列xまたは6の最大値を保存します。
3.構成属性属性
オブジェクトの作成を表す関数。説明:コンストラクター属性は、プロトタイプを持つすべてのオブジェクトのメンバーです。これらには、グローバルオブジェクトと数学オブジェクトを除くすべてのJScriptネイティブオブジェクトが含まれます。コンストラクタープロパティは、特定のオブジェクトインスタンスを構築する関数への参照を保持します。
例えば:
コードコピーは次のとおりです。
x = new String( "hi");
if(x.constructor == string)//プロセス(条件が真)。
//または
functionmyfunc {
//関数本文。
}
y = new myfunc;
if(y.constructor == myfunc)//プロセス(条件が真)。
配列の場合:
y = new Array();
配列メソッド:
マインドマップの配列が添付されています: