Maison > Article > interface Web > Comment définir une classe dans les connaissances JavaScript_Basic
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;}; }