Objet()

En utilisant la fonction constructeur intégrée Object (), nous pouvons créer des objets vides génériques à la volée. En fait, si vous vous souvenez du début du chapitre 1, c'est exactement ce que nous avons fait en créant l'objet cody. Permet de recréer l'objet cody.

Échantillon: sample69.html

 

Ici, nous ne faisons qu’utiliser le Objet() fonction constructeur pour créer un objet générique appelé cody. Vous pouvez penser à la Objet() constructeur en tant que emporte-pièce pour la création d'objets vides sans propriétés ni méthodes prédéfinies (à l'exception de celles héritées de la chaîne de prototypes).

Si ce n'est pas évident, le Objet() constructeur est un objet lui-même. C'est-à-dire que la fonction constructeur est basée sur un objet créé à partir du Une fonction constructeur. Cela peut être déroutant. Rappelez-vous que comme le Tableau constructeur, le Objet constructeur crache simplement des objets vides. Et oui, vous pouvez créer tous les objets vides que vous aimez. Cependant, créer un objet vide comme cody est très différent de la création de votre propre fonction constructeur avec des propriétés prédéfinies. Assurez-vous de bien comprendre que cody n’est qu’un objet vide basé sur la Objet() constructeur. Pour exploiter réellement la puissance de JavaScript, vous devez apprendre non seulement à créer des conteneurs d'objets vides à partir de Objet(), mais aussi comment construire votre propre "classe" d'objets (La personne()) comme le Objet() fonction constructeur elle-même.


Objet() Paramètres

le Objet() La fonction constructeur prend un paramètre optionnel. Ce paramètre est la valeur que vous souhaitez créer. Si vous ne fournissez aucun paramètre, alors un nul ou indéfini la valeur sera assumée.

Échantillon: sample70.html

 

Si une valeur à part nul ou indéfini est passé au Objet constructeur, la valeur transmise sera créée en tant qu’objet. Donc, théoriquement, nous pouvons utiliser le Objet() constructeur pour créer l’un des autres objets natifs ayant un constructeur. Dans l'exemple suivant, je ne fais que.

Échantillon: sample71.html

 

Objet() Propriétés et méthodes

le Objet() object a les propriétés suivantes (sans compter les propriétés et méthodes héritées):

Propriétés (Object.prototype;):

  • prototype

Objet() Propriétés et méthodes de l'instance

Objet() Les instances d'objet ont les propriétés et méthodes suivantes (n'inclut pas les propriétés et méthodes héritées):

Propriétés d'instance (var myObject = ; myObject.constructor;):

  • constructeur

Méthodes d'instance (var myObject = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • toString ()
  • valeur de()

La chaîne du prototype se termine par Object.prototype, et donc toutes les propriétés et méthodes de Objet() sont hérités par tous les objets JavaScript.


En créant Objet() Objets utilisant des "objets littéraux"

Créer un "objet littéral" implique d'instancier un objet avec ou sans propriétés à l'aide d'accolades (var cody = ;). Rappelez-vous au début du chapitre 1 lorsque nous avons créé l'objet cody unique, puis que nous lui avons donné les propriétés à l'aide de la notation par points. Faisons cela à nouveau.

Échantillon: sample72.html

 

Notez dans le code que la création du Cody objet et ses propriétés ont pris cinq déclarations. En utilisant la notation littérale des objets, nous pouvons exprimer la même chose Cody objet dans une déclaration.

Échantillon: sample73.html

  

L'utilisation de la notation littérale nous permet de créer des objets, y compris des propriétés définies, avec moins de code et d'encapsuler visuellement les données associées. Remarquez l'utilisation de : et , opérateurs dans une seule déclaration. C'est en fait la syntaxe recommandée pour créer des objets en JavaScript en raison de son caractère concis et de sa lisibilité..

Vous devez savoir que les noms de propriété peuvent également être spécifiés sous forme de chaînes:

Échantillon: sample74.html

  

Il n'est pas nécessaire de spécifier les propriétés sous forme de chaînes, à moins que le nom de la propriété:

  • Est l'un des mots clés réservés (classe).
  • Contient des espaces ou des caractères spéciaux (autre que des chiffres, des lettres, le signe dollar ($) ou le caractère de soulignement (_)).
  • Commence par un numéro.

Prudent! La dernière propriété d'un objet ne doit pas être précédée d'une virgule. Cela provoquera une erreur dans certains environnements JavaScript.


Tous les objets héritent de Object.prototype

le Objet() La fonction constructeur en JavaScript est spéciale, car sa prototype la propriété est le dernier arrêt de la chaîne de prototypes.

Dans l'exemple suivant, j'augmente la Object.prototype avec un foo propriété, puis créer une chaîne et tenter d'accéder à la foo propriété comme s'il s'agissait d'une propriété de l'occurrence de chaîne. Depuis le myString l'instance n'a pas de foo propriété, la chaîne de prototypes entre en jeu et la valeur est recherchée à String.prototype. Ce n'est pas là, donc le prochain endroit à regarder est Object.prototype, Quel est l'emplacement final? JavaScript recherchera une valeur d'objet. le foo la valeur est trouvée parce que je l'ai ajoutée, elle renvoie donc la valeur de foo.

Échantillon: sample75.html

  

Conclusion

Prudent! Quelque chose ajouté à Object.prototype apparaîtra dans un pour dans boucle et la chaîne de prototypes. Pour cette raison, il a été dit que changer Object.prototype est interdit.