ホームページ >ウェブフロントエンド >jsチュートリアル >jsでオブジェクトを生成する3つの基本的な方法(ファクトリーモード、コンストラクターモード、プロトタイプモード)を詳しく解説

jsでオブジェクトを生成する3つの基本的な方法(ファクトリーモード、コンストラクターモード、プロトタイプモード)を詳しく解説

高洛峰
高洛峰オリジナル
2017-01-10 12:18:211182ブラウズ

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 サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。