1. ファクトリ パターン
ファクトリ パターンは、ECMAScript ではクラスを作成できないため、特定のインターフェイスを持つオブジェクトをカプセル化するために使用されます。実装方法は非常に簡単で、関数内でオブジェクトを作成し、そのオブジェクトにプロパティやメソッドを代入し、そのオブジェクトを返すだけです。
function a(name){ var b = new object(); b.name = name; b.say = function(){ alert(this.name); } return b }
この関数は内部で b オブジェクトを生成し、それを返します。
2. コンストラクターパターン
function Person(name, url) { //注意构造函数名第一个字母大写 this.name = name; this.url = url; this.alertUrl = alertUrl; } function alertUrl() { alert(this.url); }
オブジェクトが構築されるたびに、alertUrl メソッドが生成され、リソーススペースの無駄になるため、スペースを節約するために、alertUrl メソッドはグローバルに記述されますが、これを書くとオブジェクト指向プログラミングの本来の目的を考慮すると、次のプロトタイプ パターンの方が適しています。
3. プロトタイプ パターン
作成するすべての関数にはプロトタイプ属性があり、この属性はオブジェクトを指すポインターであり、このオブジェクトの目的は、特定のメソッドのすべてのインスタンスで共有できるプロパティを含めることです。 。プロトタイプ オブジェクトを使用する利点は、すべてのオブジェクト インスタンスがそれに含まれるプロパティとメソッドを共有できることです。
function Person(){ } Person.prototype.name = "bill"; Person.prototype.address = "GuangZhou"; Person.sayName = function (){ alert(this.name); } var person1 = new Person(); var person2 = new Person(); //测试代码 alert(person1.name); // bill alert(person2.name); // bill person1.sayName(); //bill person2.sayName(); //bill person1.name = "666"; alert(person1.name); // 666 alert(person2.name); // bill person1.sayName(); //666 person2.sayName(); //bill
私たちが作成するすべての関数にはプロトタイプ属性があり、これは実際にはオブジェクトを指すポインターです。
person1 などの person オブジェクトが構築されるとき、そのデフォルトの name 属性は bill です。 name の値を変更する場合は、person1.name を操作する必要があります。これは、このオブジェクトの name 属性を変更するだけです。 alert(person1.prototype.name) は、プロトタイプの name 属性である請求書を引き続きポップアップ表示します
上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。 PHP 中国語 Web サイトをサポートします。
js でオブジェクトを生成する 3 つの基本的な方法 (ファクトリー モード、コンストラクター モード、プロトタイプ モード) の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。