Maison  >  Article  >  interface Web  >  méthode de constructeur javascript pour définir des objets

méthode de constructeur javascript pour définir des objets

不言
不言original
2018-05-04 16:51:071498parcourir

Cet article présente principalement la méthode de constructeur JavaScript pour définir des objets. Les amis qui en ont besoin peuvent s'y référer

Javascript est un langage dynamique Vous pouvez ajouter des attributs aux objets au moment de l'exécution et supprimer des objets. >

Copier le code Le code est le suivant :

<html> 
<head>
<script type="text/javascript">
/*
//01.定义对象第一种方式
var object =new Object();
alert(object.username);
//01.1增加属性username
object["username"]="liujianglong";
//object.username="liujl";
alert(object.username);
//01.2删除属性username
delete object.username;//username属性已经从object对象中删除
alert(object.username);
*/
//02.定义对象第二种方式--在javascript中定义对象的一种最常见的方式
var object={name:"zhangsan",age:10,sex:"fale"};
alert(object.name);
alert(object.age);
alert(object.sex);
</script>
</head>         
<body>
</body>
</html>
Nom de l'attribut : le nom de la méthode est également possible Parce que la fonction elle-même est un objet

javascript. tableau Tri

Copier le code Le code est le suivant :

<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
var array=[1,3,25];
/////////////////////////////////
var compare=function(num1,num2){
    var temp1=parseInt(num1);
    var temp2=parseInt(num2);
    if(temp1<temp2){
        return -1;
    }else if(temp1==temp2){
        return 0;
    }else{
        return 1;
    }
}
//array.sort(compare);//01.函数名是对象引用
////////////////////////////////
//02.匿名函数方式//////////////////
array.sort(function c(num1,num2){
var temp1=parseInt(num1);
    var temp2=parseInt(num2);
    if(temp1<temp2){
        return -1;
    }else if(temp1==temp2){
        return 0;
    }else{
        return 1;
    }
});
/////////////////////////////////
alert(array);
</script>
</head>         
<body>
</body>
</html>
Plusieurs façons de définir des objets en javascript (il n'y a pas de notion de classes en javascript, seulement des objets )

La première façon : Développer ses propriétés et méthodes en fonction de l'objet existant

Copier le code Le code est le suivant :

<script type="text/javascript">
//01.基于已有对象扩充其属性和方法
var object=new Object();
object.username="zhangsan";
object.sayName=function (name){
    this.username=name;
    alert(this.username);
}
alert(object.username);
object.sayName("lisi");
alert(object.username);
</script>
Cette méthode a des limites car JavaScript n'a pas le concept de classe comme Java. Écrivez une classe, puis new peut obtenir un objet avec ces attributs et méthodes.

Si vous souhaitez posséder object2 pour le moment, vous ne pouvez écrire qu'une autre copie du code ci-dessus, ce qui n'est pas bon.

Deuxième méthode : Méthode d'usine

Semblable à la méthode d'usine statique en Java.

Copier le code Le code est le suivant :

<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
//对象工厂方法
var  createObject=function(){
    var object=new Object();
    object.username="zhangsan";
    object.password="123";
    object.get=function(){
        alert(this.username+" , "+object.password); 
    }
    return object;
}
var obj1=createObject();
var obj2=createObject();
obj1.get();
//修改对象2的密码
obj2["password"]="123456";
obj2.get();
</script>
</head>         
<body>
</body>
</html>
Créer des objets de la manière ci-dessus présente des inconvénients (chaque objet a une méthode get, gaspillant ainsi de la mémoire), Méthode de fabrique améliorée (tous les objets partagent une méthode get) :

Copier le code Le code est le suivant :

<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
//所有对象共享的get方法
var get=function(){
    alert(this.username+" , "+this.password);
}
//对象工厂方法
var createObject=function(username,password){
    var object=new Object();
    object.username=username;
    object.password=password;
    object.get=get;//注意:这里不写方法的括号
    return object;
}
//通过工厂方法创建对象
var object1=createObject("zhangsan","123");
var object2=createObject("lisi","345");
//调用get方法
object1.get();
object2.get();
</script>
</head>         
<body>
</body>
</html>
Troisième méthode : Définir les objets en mode constructeur

Copiez le code Le code est le suivant :

<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
var get=function(){
    alert(this.username+" , "+this.password);
}
function Person(username,password){
    //在执行第一行代码前,js引擎会为我们生成一个对象
    this.username=username;
    this.password=password;
    this.get=get;
    //在此处,有一个隐藏的return语句,用于返回之前生成的对象[这点是和工厂模式不一样的地方]
}
var person=new Person("zhangsan","123");
person.get();
</script>
</head>         
<body>
</body>
</html>
Quatrième voie : Créer un objet en utilisant la méthode prototype

Le prototype est l'objet dans l'attribut objet, tous les objets personne peuvent également avoir l'attribut prototype.

Vous pouvez ajouter quelques attributs et méthodes au prototype de l'objet.

Les inconvénients de créer des objets simplement à l'aide du prototype : ① ne peut pas transmettre les paramètres et ne peut modifier sa valeur qu'après la création de l'objet

Copier le code

Le code est le suivant :

Copier le code

Le code est le suivant :

L'utilisation de la méthode prototype pour définir un objet seul ne peut pas construire une fonction Lors de l'attribution de valeurs initiales à attributs, vous ne pouvez modifier les valeurs des attributs qu'après la génération de l'objet.
<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
function Person(){
}
Person.prototype.username="zhangsan";
Person.prototype.password="123";
Person.prototype.getInfo=function(){
    alert(this.username+" , "+this.password);
}
var person1=new Person();
var person2=new Person();
person1.username="lisi";
person1.getInfo();
person2.getInfo();
</script>
</head>         
<body>
</body>
</html>

Cinquième méthode : utiliser la méthode prototype + constructeur pour définir les objets----Utilisation recommandéeLes attributs entre les objets n'interfèrent pas les uns avec les autres

Chaque objet partage la même méthode
<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
function Person(){
}
Person.prototype.username=new Array();
Person.prototype.password="123";
Person.prototype.getInfo=function(){
    alert(this.username+" , "+this.password);
}
var person1=new Person();
var person2=new Person();
person1.username.push("wanglaowu");
person1.username.push("wanglaowu2");
person2.password="456";
person1.getInfo    ();
person2.getInfo();
</script>
</head>         
<body>
</body>
</html>

Copier le code

Le code est le suivant :


Sixième méthode : Méthode de prototype dynamique - il est recommandé d'utiliser

dans le constructeur Tous les objets partagent une méthode via des indicateurs et chaque objet a ses propres propriétés.

Copier le code
<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
//使用原型+构造函数方式来定义对象
function Person(){
    //属性 定义在构造函数中
    this.username=new Array();
    this.password="123";
}
    //方法 定义在原型中
Person.prototype.getInfo=function(){
    alert(this.username+" , "+this.password);
}
var p1=new Person();
var p2=new Person();
p1.username.push("zhangsan");
p2.username.push("lisi");
p1.getInfo();
p2.getInfo();
</script>
</head>         
<body>
</body>
</html>
Le code est le suivant :

Recommandations associées :

Constructeur Javascript, privilèges publics, privés et statique définitions des membres Compétences Method_javascript

<!DOCTYPE html>
<html> 
<head>
<script type="text/javascript">
var Person=function (username,password){
    this.username=username;
    this.password=password;
    if(typeof Person.flag=="undefined"){
        alert("invoked");
        Person.prototype.getInfo=function(){
            alert(this.username+" , "+this.password);
        }
        Person.flag=true;    
    }
}
var p1=new Person("zhangsan","123");
var p2=new Person("lisi","456");
p1.getInfo();
p2.getInfo();
</script>
</head>         
<body>
</body>
</html>

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