// Definieren Sie einen Konstruktor zum Generieren des entsprechenden Objekts, der mit der Konstruktorfunktion in Java verglichen werden kann Person(name, age){ //Beim Aufruf von new Person , bevor der ausgeführt wird Generieren Sie in der ersten Codezeile ein Personenobjekt und weisen Sie dem Schlüsselwort this den Index // des Objekts im Speicher zu. Zu diesem Zeitpunkt können Sie das neu generierte Objekt über das Schlüsselwort this bedienen, z. B. durch Hinzufügen von Attributen oder Methoden"/> // Definieren Sie einen Konstruktor zum Generieren des entsprechenden Objekts, der mit der Konstruktorfunktion in Java verglichen werden kann Person(name, age){ //Beim Aufruf von new Person , bevor der ausgeführt wird Generieren Sie in der ersten Codezeile ein Personenobjekt und weisen Sie dem Schlüsselwort this den Index // des Objekts im Speicher zu. Zu diesem Zeitpunkt können Sie das neu generierte Objekt über das Schlüsselwort this bedienen, z. B. durch Hinzufügen von Attributen oder Methoden">
Heim > Artikel > Web-Frontend > Detaillierte Code-Erklärung zur Verwendung der Konstruktormethode zum Erstellen einer JavaScript-Objektklasseninstanz
Konstruktormethode
<script type="text/javascript"> //定义一个构造函数,用来生成对应的对象,可以类比Java中的构造函数 function Person(name, age){ //当调用new Person的时候,在执行第一行代码前,先生成一个Person对象,并将对象在内存中的 //索引赋值给this关键字,此时可以通过this关键字操作新生成的对象,如下面的添加属性或方法 this.name = name; //this关键字不能少。为当前对象,即this关键字引用的对象的name属性赋值 //,实际相当于为当前对象添加name属性后,再为其name属性赋值。 this.age = age; this.showName = function(){ //为当前对象添加方法 alert(this.name); } this.showAge = function(){ alert(this.age); } //将当前对象返回给赋值符号左边的变量(不必明确使用return) } var obj1 = new Person("Koji", 22); //生成一个Person对象 var obj2 = new Person("Luo", 21); obj1.showName(); //Koji obj1.showAge(); //22 obj2.showName(); //Luo obj2.showAge(); //21 </script>
Die Konstruktormethode ist dieselbe wie die Factory-Methode und erstellt für jedes Objekt ein exklusives Funktionsobjekt. Natürlich können diese Funktionsobjekte auch außerhalb des Konstruktors definiert werden, sodass Objekt und Methode unabhängig voneinander sind. Prototyp-Methode: Diese Methode verwendet das Prototyp-Attribut des Objekts
<script type="text/javascript"> function Person(){} //定义一个空构造函数,且不能传递参数 //将所有的属性的方法都赋予prototype属性 Person.prototype.name = "Koji"; //添加属性 Person.prototype.age = 22; Person.prototype.showName = function(){ //添加方法 alert(this.name); } Person.prototype.showAge = function(){ alert(this.age); } var obj1 = new Person(); //生成一个Person对象 var obj2 = new Person(); obj1.showName(); //Koji obj1.showAge(); //22 obj2.showName(); //Koji obj2.showAge(); //22 </script>
Wenn das Person-Objekt generiert wird, werden die Prototyp-Attribute dem neuen Objekt zugewiesen. Dann werden die Eigenschaften und Methoden gemeinsam genutzt. Das Problem bei dieser Methode besteht darin, dass der Konstruktor keine Parameter übergeben kann und jedes neu generierte Objekt einen Standardwert hat. Zweitens gibt es kein Problem mit der Methodenfreigabe, aber es gibt ein Problem mit der Attributfreigabe, wenn das Attribut ein Objekt ist, das seinen Zustand ändern kann.
<script type="text/javascript"> function Person(){} //定义一个空构造函数,且不能传递参数 Person.prototype.age = 22; Person.prototype.array = new Array("Koji", "Luo"); Person.prototype.showAge = function(){ alert(this.age); } Person.prototype.showArray = function(){ alert(this.array); } var obj1 = new Person(); //生成一个Person对象 var obj2 = new Person(); obj1.array.push("Kyo"); //向obj1的array属性添加一个元素 obj1.showArray(); //Koji,Luo,Kyo obj2.showArray(); //Koji,Luo,Kyo </script>Wenn der obige Code Elemente zum Attributarray von obj1 bis obj1 hinzufügt, sind auch die Elemente des Array-Attributs von obj2 betroffen. Der Grund dafür ist, dass sich die Array-Attribute von obj1 und obj2 auf Objekte beziehen Wenn Sie dasselbe Array-Objekt verwenden, wirkt sich die Änderung dieses Array-Objekts natürlich auf die Eigenschaften einer anderen Referenz auf das Array-Objekt aus.
Gemischte Konstruktor-/Prototyp-Methode
Verwenden Sie den Konstruktor, um die Eigenschaften des Objekts zu definieren. verwenden Der Prototyp definiert die Methoden des Objekts, sodass die Eigenschaften privat sind und die Methoden gemeinsam genutzt werden.
<script type="text/javascript"> function Person(name, age) { this.name = name; this.age = age; this.array = new Array("Koji", "Luo"); } Person.prototype.showName = function() { alert(this.name); } Person.prototype.showArray = function() { alert(this.array); } var obj1 = new Person("Koji", 22); //生成一个Person对象 var obj2 = new Person("Luo", 21); obj1.array.push("Kyo"); //向obj1的array属性添加一个元素 obj1.showArray(); //Koji,Luo,Kyo obj1.showName(); //Koji obj2.showArray(); //Koji,Luo obj2.showName(); //Luo </script>Sobald Attribute privat sind, hat die Änderung ihrer jeweiligen Attribute keine Auswirkungen auf andere Objekte. Gleichzeitig werden Methoden auch von verschiedenen Objekten gemeinsam genutzt. Semantisch entspricht dies den Anforderungen der objektorientierten Programmierung.
Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung zur Verwendung der Konstruktormethode zum Erstellen einer JavaScript-Objektklasseninstanz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!