オブジェクトパーツ
オブジェクトタイプ
オブジェクトは、あらゆるタイプのオブジェクトを保存できる順序付けられていないコレクションであり、他のすべてのオブジェクトはこのオブジェクトから継承されます。
オブジェクト作成には2つのタイプがあります。1つは新しい演算子を使用することで、もう1つは文字通りの表記です。
1.新しいオペレーターを使用してオブジェクトを作成します
var obj = new object(); //大文字に注意してください。
新しいオブジェクト()メソッドを介して新しいオブジェクトを生成することは、文字通りのメソッドと同等であることに注意してくださいobj = {}。
2。リテラル方法を使用して作成します。
var obj = {name: 'trigkit4'、age:21}; // semicolonは追加するのが最善ですリテラルを使用してオブジェクトオブジェクトを宣言する場合、オブジェクト()コンストラクターは呼び出されません(FFを除く)
object.prototypeオブジェクト
すべてのコンストラクターには、プロトタイプオブジェクトを指すプロトタイプ属性があります。
object.prototype.print = function(){console.log(this)}; var obj = new object(); obj.print()// objectインスタンスOBJはオブジェクトのプロパティと方法を直接継承します。プロトタイプ
1。オブジェクトは単なる特別なデータです。オブジェクトにはプロパティとメソッドがあります。 JavaScriptはオブジェクト指向の言語ですが、JavaScriptはクラスを使用しません。 JavaScriptは[プロトタイプ] [1]に基づいており、クラスベースではありません。
2。属性:特定のオブジェクトに所属する可変可変です。方法:これは、特定のオブジェクトによってのみ呼び出される機能です。
3.JSオブジェクトは、プロパティとメソッドのコレクションです。メソッドは関数であり、オブジェクトのメンバーです。属性は、オブジェクトのメンバーである値または値のセット(配列またはオブジェクトの形式)です。
4.JSオブジェクトは、コンストラクター関数に基づいています。コンストラクター関数を使用して新しいオブジェクトを作成する場合、新しいオブジェクトがインスタンス化されていると言えます。プロパティは、コンストラクター関数内の変数です。
コンストラクター関数を使用してインスタンス化されたオブジェクト:
cat = new Animal();
JavaScriptはオブジェクトベースの言語であり、遭遇するほとんどすべてがオブジェクトです。ただし、構文にクラス(クラス)がないため、真のオブジェクト指向プログラミング(OOP)言語ではありません。
<script type = "text/javascript"> //オブジェクトは名前/値ペアのコレクションですvar browser = {//オブジェクトはカーリーブレースに囲まれた名前です: "firefox"、 "gecko"}; </script> //オブジェクトの属性Browser.name // "firefox" "オブジェクト(OBJCT)はプロパティのコレクションであり、各プロパティは「名前/値ペア」で構成されています。 JSは、番号付き値の順序付けられたセットである特別なオブジェクト - アレイも定義します。
JSは特別なオブジェクトも定義します - 関数、関数はそれに関連付けられた実行可能コードを持つオブジェクトです。関数を呼び出してコードを実行し、操作結果を返します。
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"> function person(name、age){this.name = name; this.age = age; } </script>インスタンスオブジェクトを生成できるようになりました。
<script type = "text/javascript"> var boy = new person( "xiao ming"、12); var girl = new Person( "Xiao Hong"、10);アラート(boy.name); // Xiao Ming Alert(boy.age); // 12 </script>
現時点では、男の子と女の子は、コンストラクターを指すコンストラクター属性を自動的に含みます。
アラート(boy.constructor == person); //真実
アラート(girl.constructor); //コンストラクターコードの文字列全体を出力して、自分で試してみてください
プロトタイプパターンJavaScriptは、各コンストラクターが別のオブジェクトを指すプロトタイプ属性を持っていることを規定しています。このオブジェクトのすべてのプロパティとメソッドは、コンストラクターのインスタンスによって継承されます。
これは、プロトタイプオブジェクト上のこれらの変更されていないプロパティとメソッドを直接定義できることを意味します。
<script type = "text/javascript"> function person(name、age){this.name = name; this.age = age;} person.peroty.type = "human"; person.protote.eat = function(){alert( "Eat Rice");} </script>次に、インスタンスを生成します。
<script type = "text/javascript"> var boy = new person( "xiao ming"、 "12"); var girl = new person( "xiao hong"、 "10"); alert(boy.type); // human boy.eat(); // eat </script>
現時点では、すべてのインスタンスの型属性とEAT()メソッドは、実際にはプロトタイプオブジェクトを指しているメモリアドレスと同じであるため、動作効率が向上します。
alert(boy.eat == girl.eat); //真実
プロトタイププロパティは、オブジェクトが拡張するコンストラクター関数を指定する組み込みプロパティです。
次のコードは、CATオブジェクトのプロトタイプ属性である動物コンストラクター機能に新しい属性サイズを追加します。プロトタイププロパティを使用することにより、動物コンストラクター機能を拡張するすべてのオブジェクトはサイズプロパティにアクセスできます
cat = new Animal( "ネコ"、「ムーウ」、「ウォーク/ラン」); cat.prototype.size = "fat";
この場合、すべての動物オブジェクトのサイズ属性は「脂肪」です。プロトタイプはデフォルトでオブジェクトの新しいインスタンスになります。まだオブジェクトであるため、新しい属性をオブジェクトに追加できます。スタイルがJavaScriptのオブジェクトであるように、スタイル後にプロパティを追加し続けることもできます。
<script type = "text/javascript">/*function class*/function person(_name、_age、_salary){//人クラスのパブリック属性、クラスのパブリック属性は次のように定義されます。 //人クラスのプライベート属性、クラスのプライベート属性は次のように定義されます。 var salary = _salary; //個人クラスのパブリックメソッド(特権方法)を定義すると、クラスのパブリックメソッドは次のように定義されます。オブジェクトが特定のプロパティを探すと、最初に独自のプロパティを通過します。そうでない場合は、[[プロトタイプ]]によって参照されるオブジェクトを探し続けます。そうでない場合、[[プロトタイプ]]。[[プロトタイプ]]によって参照されるオブジェクトを探し続けます。
簡単に言えば、オブジェクトの[[プロトタイプ]]を介して別のオブジェクトへの参照を保存し、このリファレンスを介して属性を検索することです。これがプロトタイプチェーンです。
nullオブジェクト
null値を変数に割り当てるJSの関数は次のとおりです。
nullポインターを割り当てると、この変数がオブジェクトを保存する準備ができていることを理解しやすくなります。また、間違ったものを調整するのにも便利です
グローバルウィンドウオブジェクト
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 = {name: "microsoft"、ages:39、従業員:99000、CEO: "nadella"}; </script>ここでは、属性と属性値がコロン(:)によって区切られていることに注意する必要があります。複数の属性は、コンマ(、)で区切られています。リテラルオブジェクトは、メソッドを定義することもできます。このオブジェクトの属性に関数を書き込むだけです。これは匿名の関数です。それを呼び出すには、そのメソッド名()を記述するだけです。
<script type = "text/javascript"> var dog = {name: "husky"、age:2、run:function(){return "123";}} alert(dog.run());基本的な値タイプラッパー
JSには5つの基本的な値タイプがあります。数字、文字列、ブール、null、未定義です。 NULLと未定義を除き、他の3つには、いわゆる基本的なラッピングオブジェクトがあります。組み込みのコンストラクター番号()、string()、およびboolean()を使用して、ラッパーオブジェクトを作成できます。
var num = new numnumber(10); console.log(typeof num); // object object object()method object()//空のオブジェクトオブジェクトを返す//空のオブジェクトオブジェクト(null)//空のオブジェクトオブジェクト(1)// new number(1)object( 'foo')object( 'foo')object(true)// equivalent( 'foo' foo ')// equivalent(' foo ')// boolean(true)object([])//元の配列オブジェクト({})//元のオブジェクトオブジェクト(function(){})を返す//元の関数を返します配列パーツ
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];
上記のコードには、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)//プロセス(条件が真)。 //またはfunction myfunc {// func。 } y = new myfunc;if(y.constructor == myfunc)//プロセス(条件が真)。
配列の場合:
y = new Array();
配列オブジェクトメソッド
sort()メソッド
文法
arrayobject.sort(sortby)
オプションのソートによって。ソート順序を指定します。関数である必要があります。
var arr = [11,2,28,4,5,1];
console.log(arr.sort()); // return [1、11、2、28、4、5]
なぜここに11と28が配置されていないのですか?これは、パラメーターなしでソートが文字エンコード順序でソートされるためです。
それでは、アレイ要素を小さいものから大規模に並べ替えたい場合はどうなりますか?次のコードを見てください。
var arr = [11,2,28,4,5,1]; console.log(arr.sort(function(a、b){return ab; // return [1、2、4、5、11、28]}));他の基準でソートする場合は、2つの値を比較する比較関数を提供し、2つの値の相対順序を示す数値を返す必要があります。比較関数には2つのパラメーターaとbが必要であり、その戻り値は次のとおりです。
aがb未満の場合、a aはソートされた配列にbの前に表示される必要があります。
aがbに等しい場合、0を返します。
AがBより大きい場合、0より大きい値が返されます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。