この記事の主な内容は、JavaScript の高度なプログラミング、オブジェクト指向、およびプロトタイプの章に基づいています。
1. ファクトリーモード
ECMAScript はファクトリ パターンを通じてオブジェクトを作成できます:
//工厂模式 function createObject(name, age) { var obj = new Object(); //创建对象 obj.name = name; //添加属性 obj.age = age; obj.run = function () { //添加方法 return this.name + this.age + '运行中...'; }; return obj; //返回对象引用 }; var obj1 = createObject('Lee', 100); //创建第一个对象 var obj2 = createObject('Jack', 200); //创建第二个对象 //alert(obj1.run()); //打印第一个对象实例的run()方法 //alert(obj2.run()); //打印第二个对象实例的run()方法 //alert(typeof obj1); //alert(typeof obj2); alert(obj1 instanceof Object); //true alert(obj2 instanceof Object); //true
ファクトリ パターンを通じて作成されたオブジェクトは、インスタンス化の繰り返しの問題を解決しますが、オブジェクト認識の問題は解決できない (すべてのオブジェクトはオブジェクトです)。そのため、オブジェクト認識の問題を解決するために、次のコンストラクターを使用します。
2. コンストラクター
//构造函数创建 function Person(name,age){ //所有构造函数对象都是Object this.name=name; this.age=age; this.run=function(){ return this.name+this.age+"ing..."; }; }; var person1=new Person('zhu1',100); var person2=new Person('zhu2',200); alert(person1.run()); alert(person2.run()); alert(person1 instanceof Object); //ture alert(typeof person2); //Person alert(person2 instanceof Person); // true var person3=new Object(); Person.call(person3,'zhu3',300);//对象冒充,person3是Object类型,冒充Person类型 alert(person3.run());
コンストラクター内の this: 現在のスコープ オブジェクトへの参照を表します。これがグローバル スコープ内にある場合、これはウィンドウ オブジェクトを表します。コンストラクター本体内にある場合は、現在のコンストラクターによって宣言されたオブジェクトを表します。
コンストラクター メソッドは、インスタンス化とオブジェクトの識別の繰り返しの問題を解決します。ファクトリ メソッドとの違いを比較すると、次のことがわかります。
1. コンストラクター メソッドはオブジェクト (new Object()) を明示的に作成しません。2. これに属性とメソッドの値を直接割り当てます。
3. return ステートメントはありません。
4. ただし、コンストラクターを使用して作成する場合は、new 演算子を使用する必要があります。
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。