Maison  >  Article  >  interface Web  >  La différence entre utiliser de nouveaux objets et ne pas utiliser d'objets instanciés dans les compétences javascript_javascript

La différence entre utiliser de nouveaux objets et ne pas utiliser d'objets instanciés dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 15:53:432162parcourir

Regardons d'abord un exemple

function Me(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
}

Quelle est la différence entre les deux méthodes suivantes d'instanciation d'objets ?

var mefun1 = new Me('fei','20','it');
var mefun2 = Me('fei','20','it');

En termes simples

La première est la fonction constructeur, c'est-à-dire appeler la fonction constructeur via l'opérateur new pour créer une fonction
La deuxième méthode n'est pas une instanciation, mais appelle simplement la fonction et attribue la valeur de retour à la variable.

Agrandissez-le à nouveau

Il n'y a pas de vraies classes en JavaScript, mais il existe des constructeurs et de nouveaux opérateurs en JavaScript. Le constructeur est utilisé pour initialiser les propriétés et les valeurs de l'objet instance. N'importe quelle fonction JavaScript peut être utilisée comme constructeur, et le constructeur doit être préfixé par l'opérateur new pour créer une nouvelle instance.

L'opérateur

new modifie le contexte d'exécution de la fonction et modifie également le comportement de l'instruction return. En fait, l'utilisation de new et de constructeurs est très similaire aux langages traditionnels qui implémentent des classes :

// 实例化一个Me
var alice = new Me('alice', 18, 'Coder');
// 检查这个实例
assert( alice instanceof Me );

La dénomination des constructeurs utilise généralement une dénomination en casse chameau, avec la première lettre en majuscule, pour le distinguer des fonctions ordinaires. C'est
. Un usage idiomatique.

// 不要这么做!
Me('alice', 18, 'Coder'); //=> undefined

Cette fonction ne retournera qu'undéfini, et le contexte d'exécution est l'objet window (global), et trois variables globales name, age et job sont créées par inadvertance. Ne perdez pas le nouveau mot-clé lors de l'appel du constructeur.

Lorsque le constructeur est appelé à l'aide du nouveau mot-clé, le contexte d'exécution passe de l'objet global (fenêtre) à un contexte vide, qui représente l'instance nouvellement générée. Par conséquent, le mot clé this pointe vers l’instance actuellement créée. Bien que cela soit un peu déroutant à comprendre, il en va de même pour l’implémentation de mécanismes de classes intégrés dans d’autres langages.

Par défaut, si votre constructeur ne renvoie rien, il renverra ceci : le contexte actuel.

Sinon, renvoyez toute valeur de type non primitif.

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

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