Maison > interface Web > js tutoriel > Comment définir une classe dans les connaissances JavaScript_Basic

Comment définir une classe dans les connaissances JavaScript_Basic

WBOY
Libérer: 2016-05-16 16:36:19
original
1130 Les gens l'ont consulté

Voici comment je l'ai écrit à l'origine :

function Dog(){
  this.name = 'hachi';
}

Dog.prototype = {
  makeNoise:function(){
    alert('wangwangwang');
  }
};

Copier après la connexion

Plus tard j'ai vu une autre façon d'écrire qui était un peu plus compliquée et qui me paraissait inutile :

function Dog(){
  var privateVariable = 'secret';

  var fn = function(){
    //...
  }

  fn.prototype = {
    makeNoise:function(){
      alert('wangwangwang');
    }
  }

  return fn;
}

Copier après la connexion

La fonction Dog ici est en fait une fonction de création de classe, qui renvoie la vraie classe Dog.
Je pense que l'avantage de procéder ainsi est une meilleure encapsulation.
Par exemple, privateVariable est ici une variable privée :

var d = new Dog;
d.privateVariable //undefined
Copier après la connexion

De plus, si vous ajoutez une phrase à la fin du premier exemple :

Dog.prototype = {
  //e...WTF??
}
Copier après la connexion

De cette façon, le chien n'est plus un chien~

Compréhension ultérieure :
La méthode ci-dessus de création d'une nouvelle classe remplace directement l'objet prototype. De cette façon, les propriétés intégrées d'origine du prototype ont disparu (arguments, appel, application, etc.).
La méthode suivante pour créer une nouvelle classe semble meilleure :

var Dog = function(name){
  this.name = name;
  var privateVariable = 'you cannot see me.';
  this.getPrivate = function(){return privateVariable;};
}
Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal