var obj = new Object(); obj.name = "Koji"; //Ajouter des attributs à l'objet obj.showName = function(){ / /Ajouter des méthodes aux objets"/> var obj = new Object(); obj.name = "Koji"; //Ajouter des attributs à l'objet obj.showName = function(){ / /Ajouter des méthodes aux objets">

Maison  >  Article  >  interface Web  >  Explication détaillée du code sur l'utilisation de méthodes primitives et de méthodes d'usine pour créer des instances d'objet JavaScript

Explication détaillée du code sur l'utilisation de méthodes primitives et de méthodes d'usine pour créer des instances d'objet JavaScript

伊谢尔伦
伊谢尔伦original
2017-07-24 15:28:051247parcourir

Il n'y a pas de concept de classe en JS, mais on peut utiliser les fonctionnalités grammaticales de JS pour créer des objets avec l'idée de classe.

Méthode originale

<script type="text/javascript"> 
var obj = new Object(); 
obj.name = "Koji"; //为对象添加属性 
obj.age = 21; 
obj.showName = function(){ //为对象添加方法 
alert(this.name); 
} 
obj.showAge = function(){ 
alert(this.age); 
} 

obj.showName(); //Koji 
obj.showAge(); //21 

</script>

La méthode ci-dessus génère un objet via le nouveau mot-clé, puis ajoute des propriétés et des méthodes en fonction des caractéristiques de JS en tant que langage dynamique pour construire un objet. C'est l'objet qui appelle la méthode. Le problème avec cette approche est que si vous devez créer des objets plusieurs fois, vous devez répéter le code plusieurs fois, ce qui n'est pas propice à la réutilisation du code.

Méthode d'usine

<script type="text/javascript"> 
function createObj(){ 
var obj = new Object(); //创建对象 

obj.name = "Koji"; 
obj.age = 21; 
obj.showName = function(){ 
alert(this.name); 
} 
obj.showAge = function(){ 
alert(this.age); 
} 

return obj; //返回对象 
} 

var obj1 = createObj(); 
var obj2 = createObj(); 

obj1.showName(); //Koji 
obj2.showAge(); //21 

</script>

Cette méthode améliore le taux de réutilisation du code, et vous pouvez également modifier la méthode d'usine et transmettre des paramètres pour l'affectation.

<script type="text/javascript"> 
function createObj(name, age){ //构造对象时可以传入初始化参数 
var obj = new Object(); //创建对象 

obj.name = name; 
obj.age = age; 
obj.showName = function(){ 
alert(this.name); 
} 
obj.showAge = function(){ 
alert(this.age); 
} 

return obj; //返回对象 
} 

var obj1 = createObj("Koji", 22); 
var obj2 = createObj("Luo", 21); 

obj1.showName(); //Koji 
obj1.showAge(); //22 
obj2.showName(); //Luo 
obj2.showAge(); //21 

</script>

Bien que la méthode ci-dessus puisse améliorer le taux de réutilisation du code, elle présente un gros défaut par rapport au concept de classes orientées objet. L'orientation objet souligne que les propriétés des objets sont privées, tandis que les méthodes des objets sont partagées. Lorsque la méthode d'usine ci-dessus crée des objets, elle doit créer sa propre méthode privée pour chaque objet. Dans le même temps, créer des méthodes logiquement identiques pour chaque objet gaspille de la mémoire. Les améliorations sont les suivantes

<span style="font-size:14px;">
<script type="text/javascript"> 

function createObj(name, age){ 
var obj = new Object(); //创建对象 

obj.name = name; 
obj.age = age; 
obj.showName = showName; 
obj.showAge = showAge; 

return obj; //返回对象 
} 

function showName(){ //函数也是一个对象 
alert(this.name); 
} 

function showAge(){ 
alert(this.age); 
} 

var obj1 = createObj("Koji", 22); 
var obj2 = createObj("Luo", 21); 

obj1.showName(); //Koji 
obj1.showAge(); //22 
obj2.showName(); //Luo 
obj2.showAge(); //21 

</script></span>

Ce qui précède résout le problème privé des différents objets contenant des objets fonction en définissant deux objets fonction. Désormais, toutes les méthodes objet contiennent des références aux deux fonctions ci-dessus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn