La lecture de cet article nécessite une expérience en programmation dans d'autres langages.
Les types simples en JavaScript incluent :
1. Les chiffres
2. Chaîne
3.Booléen (vrai et faux)
4.null
5.indéfini
Tous les autres types sont des objets (ne nous laissons pas tromper par la valeur de retour de l'opérateur typeof), par exemple :
1. Fonction
2.Tableau
3. Expression régulière
4. Objets (les objets sont naturellement des objets)
Bases des objets
En JavaScript, un objet est une collection d'attributs (un objet est un tableau associatif). Chaque attribut comprend :
1. Nom de l'attribut, doit être une chaîne
2. Valeur d'attribut, qui peut être n'importe quelle valeur sauf indéfinie
Créer un objet à partir d'un littéral d'objet :
Nom de l'attribut et valeur de l'attribut :
Si le nom de l'attribut est un identifiant légal, les guillemets peuvent être omis :
Regardons un exemple d'accès à la propriété :
Si le nom de l'attribut n'est pas un identifiant légal, il doit être placé entre guillemets. Une propriété qui n’existe pas a la valeur indéfinie. Les objets sont passés par référence plutôt que par valeur :
Ici, x et propriétaire font référence au même objet.
Les propriétés d'un objet peuvent être supprimées à l'aide de l'opérateur delete :
Prototype de l'objet
Chaque objet est lié à un objet prototype, et les objets peuvent hériter des propriétés de l'objet prototype. Nous créons un objet via un objet littéral, et son objet prototype est l'objet Object.prototype (l'objet Object.prototype lui-même n'a pas d'objet prototype). Lorsque nous créons un objet, nous pouvons définir l'objet prototype de l'objet (nous discuterons plus tard de la méthode de configuration spécifique). Lorsque vous essayez d'obtenir (plutôt que de modifier) une propriété d'un objet, si la propriété n'existe pas sur l'objet, JavaScript tentera d'obtenir la propriété de l'objet prototype de l'objet si la propriété n'existe pas dans l'objet prototype. , puis à partir de l'objet prototype L'objet prototype est recherché, et ainsi de suite, jusqu'à l'objet prototype Object.prototype. Par rapport à l'obtention d'attributs, lorsque nous modifions un certain attribut de l'objet, cela n'affectera pas l'objet prototype.
Bases des fonctions
En JavaScript, les fonctions sont également des objets, qui sont liés à l'objet prototype Function.prototype (Function.prototype est lié à Object.prototype). La fonction a une propriété nommée prototype, et le type de sa valeur est un objet. Cet objet a une propriété constructeur, et la valeur du constructeur est cette fonction :
Les fonctions sont des objets. Vous pouvez utiliser des fonctions comme des objets. C'est-à-dire que les fonctions peuvent être enregistrées dans des variables et des tableaux, transmises aux fonctions en tant que paramètres, et que les fonctions peuvent être définies à l'intérieur des fonctions. En remarque, les fonctions ont deux propriétés cachées :
1. Contexte de la fonction
2. Code de fonction
La fonction est créée de la façon suivante :
Le nom de la fonction après le mot-clé function est facultatif. Nous formulons le nom de la fonction principalement à plusieurs fins :
1. Pour les appels récursifs
2. Utilisé par les débogueurs, les outils de développement, etc. pour identifier les fonctions
Souvent, nous n'avons pas besoin d'un nom de fonction. Une fonction sans nom de fonction est appelée une fonction anonyme. La liste des paramètres est placée entre parenthèses. JavaScript ne nécessite pas de correspondance entre les paramètres réels et les paramètres formels, par exemple :
S'il y a trop de paramètres réels, les paramètres réels supplémentaires seront ignorés. S'il y a trop peu de paramètres réels, la valeur du paramètre formel non attribué ne sera pas définie. La fonction doit avoir une valeur de retour. Si la valeur de retour n'est pas spécifiée via l'instruction return, la valeur de retour de la fonction n'est pas définie.
Une fonction et les variables externes auxquelles elle accède forment une fermeture. C’est la principale beauté de JavaScript.
Appel de fonction
Lorsque chaque fonction est appelée, elle recevra deux paramètres supplémentaires :
1.ce
2.arguments
La valeur de ceci est liée au mode d'appel spécifique. Il existe quatre modes d'appel en JavaScript :
1. Mode d'appel de méthode. Si une propriété d’un objet est une fonction, on l’appelle une méthode. Si une méthode est appelée via o.m(args), il s'agit de l'objet o (on voit que this et o ne sont liés que lorsque l'appel est effectué), par exemple :
2. Mode d'appel de fonction. Si une fonction n'est pas une propriété d'un objet, elle sera appelée comme une fonction, et celle-ci sera liée à l'objet global, par exemple :
Ce comportement prête parfois à confusion, regardons un exemple :
Le résultat souhaité doit être :
3. Mode d'appel du constructeur. Les fonctions destinées à être préfixées par new sont appelées constructeurs, par exemple :
Une fonction peut être appelée en ajoutant new devant elle (ces fonctions commencent généralement par une majuscule). Après avoir ajouté new, un objet lié à la propriété prototype de cette fonction sera créé, et ce dans le constructeur. être cet objet.
4.appliquer le mode d'appel. La méthode apply de la fonction est utilisée pour appeler la fonction, qui a deux paramètres, le premier est ceci et le second est le tableau de paramètres, par exemple :
Lorsque la fonction est appelée, nous pouvons accéder à un tableau de classes nommé arguments (pas un vrai tableau JavaScript), qui contient tous les paramètres réels, afin que nous puissions implémenter des paramètres de longueur variable :
Exception
Parlons maintenant du mécanisme de gestion des exceptions de JavaScript. Nous utilisons l'instruction throw pour lancer des exceptions et l'instruction try-cache pour intercepter et gérer les exceptions :
Ajouter des propriétés aux types JavaScript
Des constructeurs existent pour la plupart des types en JavaScript :
1. Le constructeur de l'objet est Object
2. Le constructeur du tableau est Array
3. Le constructeur de la fonction est Function
4. Le constructeur de string est String
5. Le constructeur des nombres est Number
6. Le constructeur de Boolean est Boolean
7. Le constructeur de l'expression régulière est RegExp
On peut ajouter des propriétés (souvent des méthodes) au prototype du constructeur pour rendre cette propriété disponible aux variables associées :
Portée
JavaScript nécessite des fonctions pour créer la portée :
Une fonction anonyme est créée et exécutée ici. Vous pouvez masquer les variables que vous ne souhaitez pas exposer via la portée :
Hériter
Il existe de nombreuses façons d’implémenter l’héritage en JavaScript.
Lors de la création d'un objet, nous pouvons définir l'objet prototype associé à l'objet. Nous faisons ceci :
La méthode Object.create est définie dans ECMAScript 5. Si vous utilisez ECMAScript 3, vous pouvez implémenter vous-même une méthode create :
Grâce à la méthode Object.create, nous effectuons un héritage basé sur un prototype : un nouvel objet hérite directement des propriétés d'un ancien objet (par rapport à l'héritage basé sur une classe, il n'est pas nécessaire qu'il existe une classe, et l'objet directement hérite de l'objet). Exemple :