JSは、オブジェクト指向のアイデアを使用してJava | C ++などのオブジェクト指向の言語をシミュレートできるオブジェクトベースの言語です。
•プロセス指向
◦問題を解決するための手順をフォローします
•オブジェクト指向
◦問題を解決するために必要なオブジェクト(コンテンツと役割)をフォーカスし、ビジネスロジックに従って特定のルールに従って関連する方法を呼び出します。
オブジェクトは、システムオブジェクトとカスタムオブジェクトに分割されます。配列|日付など、システムコンストラクターを呼び出すことでシステムオブジェクトを作成できます。カスタムオブジェクトは自分で作成する必要があり、システム機能を使用して作成することはできません。
JavaScriptはオブジェクトを作成します
1.直接作成します
//直接作成// jsオブジェクトを作成// 1:空のオブジェクトを作成するvar person1 = new object(); // 2:オブジェクトの必要なプロパティとメソッドをperson1.name = "ailer"に追加します。 console .log(person1.name); person1.gender = "MALE"; // 3:このオブジェクトに追加されたメソッド|(function)person1。 Manager = function(){console .log( "ailer is my ingluss name"); } // 4:オブジェクトメソッドを呼び出します:オブジェクト。メソッド名(); person1.manager(); //関数|メソッド?関数がオブジェクトに属している場合、関数はこのオブジェクトの下のメソッドに属します。関数はメソッド名を介して呼び出されます。 //変数|属性?変数が特定のオブジェクトに属している場合、変数はこのオブジェクトの下のメソッドです。属性名で変数を呼び出します。 // person1.age = "6"を増やす; // person1.name = "lemon"を変更します。 // Console .log(person1.name); // delete person1.age; console .log(person1.age); ==> undefined //参照タイプ、ストアアドレス//基本タイプ:ストア値フラグビット/* var arr1 = [1,2,3,4] var arr2 = [5、6、7,9]; var arr2 = arr1; // arr2 [0] = 10; // arr2の値を変更すると、arr1も変更(arr1 [0]); // ===> 10参照タイプ*/var per2 = new object(); per2.name = "relia"; per2.age = "18"; per2.gender = "femal"; per2.hobby = "lemons"; // 1:プロパティにアクセスします。 (ポイント構文)// 2:[](正方形の括弧)を介してオブジェクトのプロパティにアクセスします。四角いブラケットは、属性文字列を保存する属性文字列または変数でなければなりません|スクエアブラケットvar n = "name" //console.log(per2 [name "] (///double quotes console .log(per2 [n]);を使用します。 for(per2のvarプロパティ){// console.log(per2 [property]); }直感的ですが、複数のオブジェクトを作成するときにコードは冗長です
2。機能を使用して作成(工場モード)
複数の類似のオブジェクト宣言の問題を解決するために、工場パターンと呼ばれる方法を使用できます。これは、多くの重複を伴うオブジェクトをインスタンス化する問題を解決することです。
//コンストラクター関数CreatePerson(name、age)を定義する{//新しい空のオブジェクトを作成var person = new object; // add属性| method person.name = name; person.age = age;人。 manager = function(){console .log( "ai"); } //返品担当者; } var per1 = createperson( "aier"、12); console .log(per1.name); var per2 = createperson( "lemon"、23);コンソール.log(per2.age); console.log(per2 instance of object); // true console.log(per2 instance of createperson); // false //オブジェクトタイプconsole.log(per2.manager == per1.manager); // falseは、それぞれPer1およびPer2の開いたスペースと閉じたスペースがそれぞれ取得できます。優れた:同様のインスタンスの大量作成
欠落:インスタンスは同様の属性を使用し、メモリ廃棄物を公開し、オブジェクトのタイプを区別できません。
3。文字通りの創造
優れている:シンプルで直接
欠落:バッチで同様のオブジェクトを構築できません
//リテラルによって作成されたオブジェクトはインスタンスを指すのではなく、オブジェクトを指す// }} per1.eat(); // ailer per1.name = "lemon"; per1.eat(); // lemon console.log(typeof per1); // object console.log(per1.constructor == object); // true
4。NEW+コンストラクター
// constructorはオブジェクトを作成し、その子オブジェクトはinstanceofによって認識されません。新しい+OBJ //オブジェクトで作成されたすべてが認識されていますが、一部のコード領域はまだ無駄になっています。 ==>プロトタイプ作成// JSオブジェクトの作成new+constructor // 1:CREATE CONSTRACTOR |通常、最初の文字はCAPEACEADED FUNCTION CREATEPERSON(name、age){// 2:このポインター上のオブジェクトのメソッドを接続します。関数がオブジェクトを作成するために呼び出されると、このポインターはこの新しいオブジェクトを指します。 //これはこのオブジェクトに追加されますthis.name = name; this.age = age; /* this.speak = function(){//ここで、これは作成オブジェクトconsole.log(this.name+"hello")も指します。 }} /* createperson.prototype.gender = "20"; createperson.prototype。 ea = function(){console .log(this.name+ "sfd"); }*/// __Proto__:IS:インスタンスオブジェクトのプロトタイプ属性。対応するコンストラクターに対応するプロトタイプオブジェクトを指します// [[プロトタイプ]] // var per1 = new CreatePerson( "ailer"、 "20"); var per2 = new CreatePerson( "Relia"、 "18"); Console .log(per1 instanceof createperson); // == true Console .log(per2 instanceof createperson); // ==> true Console .log(per1.speak == per2.speak); // == falseとは、システムが2つの異なるコード領域を開いてメモリ廃棄物を引き起こしたことを意味します。文字通りを作成する方が便利であるため、コンストラクター、通常のコンストラクター(工場パターン)を生成し、サブオブジェクトのインスタンスが認識されず、メモリが無駄になります。新しい+コンストラクターを使用すると、サブオブジェクトが認識されますが、一部のコードはまだ複製され、メモリが無駄になり、プロトタイプコードが生成されて解決します。
5。プロトタイプモード
function createanimal(name、age){//1.2:外部パラメーターをインスタンス属性this.name = name; this.age = age; } //1.3プロトタイプ(プロトタイプ属性、プロトタイプメソッド)Createanimal.prototype.gender = "MALE"; createanimal.prototype.style = function(){console.log(this.name + "ailers"); }; // 2:コンストラクターを呼び出してオブジェクトvar cat1 = new Createanimal( "Xiaohua"、 "2"); var cat2 = new Createanimal( "Xiaohua"、 "2"); cat1.style(); console.log(cat1.style == cat2.style); //メソッドは同じアドレスを参照し、アドレスを保存するプロトタイプオブジェクトに属性を置きますconsole.log(cat1 instance of createanimal); // true console.log(cat1 instance of object); // true console.log(cat1 instance of object); // true console.log(cat1.constructor == createanimal); // true console.log(cat1.constructor = = = = = = = = Object); // == false //コンストラクターのプロトタイプには、コンストラクター機能console.log(createanimal.prototype.constructor == createanimal); // true //このオブジェクトにプロパティが存在するかどうかを決定するコンストラクター属性もあります。この属性はインスタンス属性またはプロトタイプ// alert(cat1の "name")// true // alert(cat1の "gender"); FALSEを返しません。 console.log(cat1.hasownproperty( "aaa")); // false存在しないプロパティはfalse console.log(cat1.hasownproperty( "name"));パラメーターはプロトタイププロパティツールクラスConsole.log(isprototype( "gender"、cat1)); } else {return false; }} else {return false; }}/*関数isproperty(object、property){//プロトタイプのreturnにプロパティがあるかどうかを判断!object.hasownproperty(プロパティ)&&(オブジェクトのプロパティ);}*//動的プロトタイプモード
//プロトタイプ関数ごとに初期化(名前、年齢、性別){this.name = name; this.age = age; this.gender = gender; //プロトタイプを初期化するときに1回のみ実行します(thipof this.sayname!= "function"){person.prototype.sayname = function(){alert(this.name); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。