Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Code-Erklärung zur Verwendung der Konstruktormethode zum Erstellen einer JavaScript-Objektklasseninstanz

伊谢尔伦
Freigeben: 2017-07-24 15:33:15
Original
1174 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
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>
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!