Der Hauptinhalt dieses Artikels stammt aus den Kapiteln „Fortgeschrittene JavaScript-Programmierung“, „Objektorientiert“ und „Prototyp“:
1. Werksmodus
ECMAScript kann Objekte über das Factory-Muster erstellen:
//工厂模式 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
Objekte, die durch das Factory-Muster erstellt wurden, lösen das Problem der wiederholten Instanziierung, aber das Objekterkennungsproblem kann nicht gelöst werden (alle Objekte sind Objekte). Um das Objekterkennungsproblem zu lösen, verwenden wir daher den folgenden Konstruktor.
2. Konstruktor
//构造函数创建 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());
Dies im Konstruktor: stellt den Verweis auf das aktuelle Bereichsobjekt dar. Wenn es sich im globalen Bereich befindet, stellt es das Fensterobjekt dar. Wenn es sich im Konstruktorkörper befindet, stellt es das vom aktuellen Konstruktor deklarierte Objekt dar.
Die Konstruktormethode löst das Problem der wiederholten Instanziierung und Objektidentifizierung. Wenn wir die Unterschiede zur Factory-Methode vergleichen, können wir Folgendes sehen:
1. Die Konstruktormethode erstellt kein Objekt (new Object())
2. Weisen Sie diesem direkt Attribut- und Methodenwerte zu;
3. Keine Rückgabeerklärung;
4. Beim Erstellen mit einem Konstruktor müssen Sie jedoch den neuen Operator
verwendenDas Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.