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

Comment définir une classe dans les connaissances JavaScript_Basic

WBOY
WBOYoriginal
2016-05-16 16:36:191109parcourir

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

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

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

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;
}

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

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

Dog.prototype = {
  //e...WTF??
}

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;};
}

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