Maison > Article > interface Web > Comment définir une classe en javascript orienté objet ?
L'utilisation intensive de javascriptrencontre des problèmes. Le premier est l'encapsulation des objets js. js ne fournit pas de mécanisme de classe. La seule classe intégrée est la classe de fonction, ce qui signifie que. toutes les fonctions sont un objet d'instanciation de la classe de fonctions. Cependant, en nous appuyant sur cette classe unique, nous pouvons simuler la définition d'une nouvelle classe.
La première chose qui me vient à l'esprit est d'utiliser directement une fonction pour générer une classe entièrement définie :
function myClass(arg,...) { this.attributeName; this.functionName = function(){}; }
Cependant, il y a un problème avec cela à chaque fois. une nouvelle instance myClass est créée. À ce moment, les fonctions internes rouvriront l'espace et renverront des références à functionName. Mais cela n’est pas cohérent avec la classe que nous avons imaginée et gaspille de l’espace. En théorie, les fonctions de la classe devraient être partagées.
Une approche plus raisonnable consiste à définir la fonction en dehors de la classe, puis à attribuer le pointeur de fonction à functionName à l'intérieur de la classe. L'autre consiste à utiliser myClass.prototype.functionName = function(){} en dehors de la classe. Les deux sont de bons choix, le second se rapprochant davantage de la définition de classe.
Ensuite, var newObj = new myClass(); et vous avez terminé.
À propos des fonctions sans nom de js
L'une des fonctions des fonctions sans nom peut être de générer une référence à un nouvel objet fonction, principalement à des fins de définition.
Une autre utilisation concerne certaines fonctions de rappel en js qui ne peuvent pas contenir de paramètres.
L'exemple évident est setInterval. Je pense que c'est une fonction qui donne mal à la tête à beaucoup de gens, surtout lorsque vous souhaitez ajouter des paramètres à la fonction de rappel.
Et le plus gênant est que DHTML n'est pas un standard spécifié par le w3c, donc le tableau des paramètres setInterval donné par les différents navigateurs est différent. . .
En ce qui concerne les deux navigateurs testés (IE core, webkit core)
IE: setInvterval(function, msecond [,lang]);
chrome:setInterval (function) , msecond [, pram1, pram2, ....]);
En d'autres termes, chrome permet d'ajouter des paramètres pour fonctionner, et la liste des paramètres est à la fin. Cependant, le dernier paramètre d'IE est d'indiquer le type de langage de script utilisé, car en plus de js, IE prend également en charge d'autres langages de script tels que vbs.
Afin de résoudre le problème de compatibilité, nous devons utiliser des fonctions sans nom. . .
function test(yourArg) { var arg = yourArg; setInterval(function(){callback(arg)}, time); }
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!