序文
JavaScriptを使用してオブジェクトを作成する方法はたくさんあります。次に、それらの4つをリストし、各メソッドの利点と短所をリストしてみましょう。そうすれば、それを選択して使用できます。見てみましょう。
工場モデル
function createperson(name、age){var obj = new object(); obj.name = name; obj.age = age; OBJを返します。 //必須ではありません。さもなければ未定義:未定義:} var person1 = new createperson( 'Young'、18); console.log(person1.name + ':' + person1.age);利点:工場のパターンは、複数の類似オブジェクトを作成する問題を解決できます
短所:オブジェクト認識の問題は解決されていません(オブジェクトのタイプを決定する方法)
コンストラクターモード
function person(name、age){this.name = name; this.age = age; } var person1 = new person( 'Young'、18); console.log(person1.name + ':' + person1.age);彼女の長所と短所について話す前に、最初に彼女自身の物語について話しましょう。
コンストラクターを関数として使用します
function person(name、age){this.name = name; this.age = age; this.sayname = function(){return this.name; }} // var person1 = new Person( 'Young'、18)を使用します。 person1.sayname(); console.log(person1.name + ':' + person1.age); //担当者(「風」、18); console.log(window.sayname()); // var obj = new object()を呼び出す; person.call(obj、 'bird'、100); console.log(obj.sayname());コンストラクターの利点と短所
利点:そのインスタンスは特定のタイプとして識別できます
短所:各メソッドは、各インスタンスで再作成する必要があります。もちろん、このように変更できます。
function person(name、age){this.name = name; this.age = age; this.sayname = sayname; } function saysname(){return this.name; }代わりに、グローバル関数を呼び出すため、カプセル化はありません。 。 。次のプロトタイプモードは、この欠点を補うことができます
プロトタイプモード
function person(){} person.prototype.name = 'Young'; person.prototype.age = 18; person.prototype.sayname = function(){return this.name; } var person1 = new Person(); console.log(person1.sayname()); var person2 = new Person(); console.log(person1.sayname()); alert(person1.sayname === person2.sayname); // person1 and person2は、同じ属性グループの同じsayname()関数にアクセスしますプロトタイプに保存された値はオブジェクトインスタンスからアクセスできますが、プロトタイプに保存されている値は、インスタンスオブジェクトを介して書き換えることはできません
function person(){} person.prototype.name = 'Young'; person.prototype.age = 18; person.prototype.sayname = function(){return this.name; } var person1 = new Person(); var person2 = new Person(); person1.name = 'wind'; console.log(person1.sayname()); // wind console.log(person2.sayname()); // young alert(person1.sayname == person2.sayname); // true person1.sayNameを呼び出すと、連続して2つの検索を実行します。パーサーは、最初にInstance Person1がsayName属性を持っているかどうかを決定します。ある場合は、独自の属性を呼び出します。いいえがある場合は、プロトタイプの属性を検索します。
function person(){} person.prototype.name = 'Young'; person.prototype.age = 18; person.prototype.sayname = function(){return this.name; } var person1 = new Person(); var person2 = new Person(); person1.name = 'wind'; console.log(person1.sayname()); // wind console.log(person2.sayname()); // young delete person1.name; console.log(person1.sayname()); // young console.log(person2.sayname()); // young hasOwnPropertyTypeメソッドを使用して、プロパティがプロトタイプまたはインスタンスに存在するかどうかを検出します。この方法はオブジェクトから継承され、インスタンスでは真、プロトタイプではfalseが継承されます。
Object.keys()メソッドを使用して、オブジェクトにインスタンスプロパティを列挙します
function person(){} person.prototype.name = 'Young'; person.prototype.age = 18; person.prototype.sayname = function(){return this.name; } var keys = object.keys(person.prototype); console.log(keys); // ["name"、 "age"、 "sayname"]]プロトタイプモードの長所と短所
利点:各インスタンスのすべての方法を繰り返す必要はありません
短所:プロトタイプモードのみを使用する人はほとんどいません。 。詳細に質問のリスト
function person(){} person.prototype = {constructor:person、name: 'young'、age:18、friends:['big'、 'pig']、sayname:function(){return this.name; }}; var p1 = new person(); var p2 = new person(); p1.friends.push( 'mon'); console.log(p1.friends); // ["big"、 "pig"、 "mon"] console.log(p2.friends); // ["big"、 "pig"、 "mon"]]インスタンスには一般的に独自の属性があり、 Person.prototypeをここに配置するため、まさにここにあるため、P1の変更により、インスタンスとプロトタイプ全体が変更されます。次に、コンストラクターモードとプロトタイプモードの組み合わせを使用できます。
コンストラクターモードとプロトタイプモードを組み合わせて使用します
function person(name、age){this.name = name; this.age = age; this.friends = ['big'、 'pig']; } person.prototype = {sayname:function(){return this.name; }}; var p1 = new person( 'Young'、18); var p2 = new person( 'wind'、78); p1.friends.push( 'raganya'); console.log(p1.friends); // ["big"、 "pig"、 "raganya"] console.log(p2.friends); // ["big"、 "pig"] console.log(friends == p2.friend); // false console.log(p1.sayname = = p2.sayname);このパターンは現在、カスタムタイプを作成する最も広く使用され、最も認識されている方法です。参照タイプを定義するために使用されるデフォルトモードです。
要約します
上記は、JavaScriptでオブジェクトの作成方法を分析することです。この記事では、4つの方法とその利点と短所が要約されています。誰もがJavaScriptの使用を学ぶことが役立つことを願っています。