Maison  >  Article  >  interface Web  >  Introduction à la programmation avancée JavaScript

Introduction à la programmation avancée JavaScript

巴扎黑
巴扎黑original
2017-07-18 17:06:061482parcourir


Préface :

Il m'a fallu environ une semaine pour lire attentivement la moitié de ce livre, ci-dessous. les notes de lecture que j'ai prises, j'espère qu'elles pourront donner aux personnes qui liront ce livre une référence approximative. C'est peut-être un peu brouillon et pas complet pour le moment, je vais le trier et l'ajouter plus tard. (2017-7-17)

Chapitre 1 JavaScriptIntroduction

Chapitre 2 HTML utilisé en HTMLJavaScript

Chapitre 3 Concepts de base

3.1.Grammaire

Sensible à la casse

Identifiant(Il est recommandé d'utiliser un étui camelmyCar)

Commentaire // /**/

Strict mode (use strict)

déclaration recommande var diff-a-b; d'utiliser le point-virgule et if( test ) { alert (test); >Utiliser également {}

3.2 Mots clés et mots réservés

3.3 Variable

Non initialiséundefined var message = "hi"; message = 100; Le type peut être modifié à volonté

Function test(){

Var a = “hi”; 局部

b = “hi”; 全局

}

Test(); alert(a); Erreur alert(b); salut

3.4 Type de données

typeof

Non défini (défini mais non attribué)

Null(pointeur d'objet nul)

Booléen(Valeur booléennevrai faux L'instruction de contrôle de flux exécutera automatiquement l'instruction correspondante booléen Convertir)

Nombre

(Octal0 Décimal dix Hexadécimal0x Plage de valeurs à virgule flottanteNaN Conversion numériqueNumber parseInt )

String(String, aucune différence entre les guillemets simples et doubles, séquence d'échappement, caractéristiques de la chaîne, toString String)

Object(Object La base de tous les objets var o = new Object();)

fonction dans ES est un objet, pas un type de données.

3.5Opérateur

Opérateur unaire ++ -- , + -( peut être utilisé pour convertir les types de données )

opérateurs de bits Bitwise NOT~num1 Bitwise AND& Bitwise ORBitwise XOR^ Maj vers la gauche<< Maj vers la droite>> Maj vers la droite non signé >>

Opérateur booléen  ! && || Opérateur multiplicatif* / % Opérateur additif+ - Opérateur relationnel < 🎜>Opérateur conditionnel ? :

Opérateur d'affectation = *= /= %= += -= <<= >>= >> ;=

Opérateur virgule

3.6

Déclaration

3.7

Fonction

arguments

Pas de surcharge

Chapitre 4 Variables, portée et problèmes de mémoire

4.1 Valeurs des types de base et des types de référenceAttributs dynamiques (

Les types de référence peuvent ajouter dynamiquement des attributs

)

Copier les valeurs des variables (Les types de base sont différents Space, le type de référence fait référence au même espace )

passer les paramètres (le même)

Type de détection (type d'instance de)

4.2Environnement et portée d'exécution

Chaîne de portée Étendre la chaîne de portée(essayez-catch avec) Aucune portée au niveau du bloc(si pour Déclarer l'identifiant de requête variable )

4.3Collecte des déchets

Stratégie(Marquer le nombre de références claires ) Problèmes de performances dans la gestion de la mémoire

Chapitre 5 Types de référence

Objet 5.1Type

Var person = {};(convient pour transmettre un grand nombre de paramètres aux fonctions) var parson = new Object();

Personne["nom"](Lorsque vous utilisez des variables pour représenter des attributs, utilisez ) person.name(Recommandé)

5.2 Array Type

Var couleurs = new Array(); var couleurs = Array(); var couleurs =[*****];

Colors[*] = *****; colours.length

Détecter le tableau : instanceof Array.isArray()

Méthode de conversion : toString() valueOf() toLocaleString() join()

Méthode Stack : push() pop()

Méthodes de file d'attente : shift() unshift()

Méthode de réorganisation : reverse() sort(Vous pouvez ajouter le paramètre de la fonction de comparaison )

Méthode de fonctionnement : concat()La modification originale est ajoutée slice()La modification originale est le segment intercepté Méthode de position :

indexOf() lastIndexOf()

Renvoyer la position de l'élément

Itératif méthode :

every() filter() forEach() map() some()

Chaque élément est traité, mais le tableau d'origine ne changera pas

Méthode de fusion :

reduce()

Ordre

reduceRight()Ordre inverse pour les deux éléments 5.3 Date tapez

Nouvelle date() à l'intérieur

parse(

"25 mai 2004") UTC(2005,0) Date.now()

Méthode héritée :

toLocaleString( ) toString() valueOf()

Méthode de formatage de la date :

toDateString() toTimeString() toLocaleDateString() toLocaleTimeString() toUTCString()

Date

/

Méthode de la composante temporelle : trop de lectures spécifiques

5.4RegExpType

Littéral

var pattern1 = / [bc]at / i;

Constructeur

var pattern2 = new RegExp(" [bc]at ", " i ”);

RegExpAttribut d'instance

global ignoreCase lastIndex source multiligne

C'est inutile

RegExpMéthode d'instance : exec() Capture d'un groupe(Capture de plusieurs ensembles de correspondances) text() Vérifiez si cela correspond à un moment donné. Limitations du mode

 : Manque de fonctionnalités avancées d'expression régulière prises en charge par certains langages ​​(Perl)

, mais dans la plupart des cas Assez

5.5 Fonction type La fonction est un objet

(

est également

Fonction Instances de ), le nom de la fonction est un pointeur. fonction somme(num1,num2) { }

Var somme = fonction(num1,num2){ };

Il n'y a pas de surcharge : la fonction est un objet et le nom de la fonction est un pointeur.

Déclaration de fonction et expression de fonction :

fonction *******

Promotion de la déclaration de fonction

var sum = ** * ****

ne favorisera pas Propriétés internes de la fonction : arguments

Objet

(

attributappelé pointe vers la fonction) cetobjet( Pointe vers l' objet d'environnement qui exécute la fonction ) attribut appelant ( pointe vers la fonction qui appelle la fonction actuelle, s'il s'agit d'un global fonction scope, la valeur est null) Attributs et méthodes de la fonction :

Attributs

(longueur

Paramètres de déclaration Numéro

prototypeHérité) Méthode non héritée :

call( ) apply() bind()

a.apply( b, c); a.call( b, d );

Exécutez la fonction

a dans l'objet environnement

b

, et

passez les paramètres à a d'ailleurs c( argument ou tableau ) / d( écrire chaque élément out ) Var a = b.bind(c);

a

est dans le

c

objet d'environnement Fonction en cours d'exécution

5.6Type de wrapper de base :

BooleanType :

var booleanObject = new Boolean(true);

Il est recommandé de ne jamais utiliser

Boolean objets.

Numéro

Type :

var numberObject = new Number(10); ) toExponential() toPrecision()

Il est également recommandé de ne pas instancier directement le type Number

.

Chaîne

Type :

var stringObject = new String(

« hello world »); 🎜>Attributs

1.Méthode Character : charAt() ou string[] renvoie le caractère correspondant charCodeAt() Renvoyer l'encodage de caractères correspondant

2. Méthode d'opération de chaîne :

concat() ou + ressemble à l'opérateur concat()

Slice() substring() substr()

Chaîne d'interception, trois sont très flexibles

3.

Méthode de position de chaîne : indexOf( ) La méthode lastIndexOf()

4.trim()

supprime tous les espaces dans le préfixe et le suffixe trimLeft() trimRight()

5. Méthode de conversion de casse de chaîne

toLowerCase() toUpperCase()

Méthode classique

toLocaleLowerCase() toLocaleUpperCase()

Régions spécifiques C'est plus fiable

Méthode de correspondance de modèle de chaîne

match()

est essentiellement le même que RegExp exec() qui renvoie la chaîne correspondant à Array

search()

Renvoie l'index de la première correspondance sinon renvoie -1

replase()

Faites correspondre et remplacez la chaîne

split()

Faites correspondre le séparateur pour générer un tableau

7.localeCompare()

Comparer deux chaînes

8.fromCharCode()

Méthode statique Encoder plusieurs caractères Devenir une chaîne

9. Méthode HTML

Par exemple, big() string >5.7 Objet intégré unique

1.GlobalObjet

URLMéthode d'encodage :

encodeURI() L'ensemble

encodeURIComponent()

un encodage d'un paragraphe decodeURI() l'intégralité du

decodeURIComponent()

décodage d'un certain paragraphe La méthode eval() est très puissante et très dangereuse

ECMAScript

Parser Global Propriétés de l'objet

non définies

, Array...... sont toutes des propriétés Web implémente l'objet global dans le cadre de l'objet

window

2.Math object

Math

propriétés de l'objet Certaines valeurs spéciales telles que π

min() max( )

Méthode

Méthode d'arrondi : convertir une valeur décimale en entier

Math.ceil(25) Avant un Math.floor(25) Retour un Math.round(25) Arrondi

random() méthode [0,1) Nombre aléatoire entre

Autres méthodes Lire trop

Chapitre 6 Programmation orientée objet

6.1Comprendre les objets

6.1.1Type d'attribut :

Attribut de données : 4 attributs

Propriété accesseur : ne contient pas de valeur de données 4 propriétés définies via Object.defineProperty()

6.1.2Définir plusieurs propriétés : Object.defineProperties() peut être un attribut de données ou un attribut d'accesseur.

6.1.3Caractéristiques de lecture des propriétés : Object.getOwnPropertyDescriptor()

6.2Création d'objets

6.2.1Modèle d'usine( Lecture )

6.2.2Modèle de constructeur(Lecture nouveau constructeur)

6.2.3Modèle de prototype :

1. Comprendre les objets prototypes

2.Prototype et inopérateur( en for-in )

3.Syntaxe du prototype plus simple(Littéral d'objet pour accéder aux objets)

4.Le caractère dynamique du prototype( Le prototype peut être remplacé par un autre objet, mais il sera invalide pour l'instance déjà créée)

5.Prototype d'objet natif( consiste à utiliser le mode prototype, vous pouvez y définir de nouvelles méthodes, mais ce n'est pas recommandé)

6. Problème avec les objets prototypes : il n'y a aucun attribut appartenant à l'instance elle-même

6.2.4Utilisation du modèle constructeur et du modèle prototype en combinaison

Le modèle le plus courant, les instances ont leurs propres propriétés et méthodes, et certaines sont partagées.

6.2.5Mode prototype dynamique

Ajoutez une déclaration de jugement au modèle ci-dessus pour modifier dynamiquement le prototype Ajouter méthode.

6.2.6Modèle de constructeur parasite

La seule différence entre le modèle d'usine et le modèle d'usine en est unnouveau, et il a plusieurs retour. L'objet renvoyé n'a rien à voir avec le constructeur, donc l'opérateur instanceof ne peut pas être utilisé pour déterminer le type d'objet. Non recommandé.

6.2.7Bien sûr, le modèle de constructeur

est similaire au modèle de constructeur parasite, mais sans l'utilisation de ce et nouveau. instanceof ne peut pas non plus être détectée

6.3Hérité

6.3.1Chaîne de prototypes Mécanisme de recherche de prototypes

1.N'oubliez pas le prototype par défaut : celui par défaut pour toutes les fonctions Les prototypes sont tous des instances de Object.

2.Déterminez la relation entre le prototype et l'instance : instanceof isPrototypeOf()

3. Définir des méthodes : de nouvelles méthodes doivent être définies une fois que l'instance a remplacé le prototype.

4. Problème de chaîne du prototype :

Les attributs extérieurs au prototype sont également hérités

Quand en créant une instance d'un sous-type, les paramètres ne peuvent pas être transmis au constructeur du supertype.

est rarement utilisé seul.

6.3.2Utilisez le constructeur emprunté pour utiliser appel ou appliquer Héritez et transmettez les paramètres mais utilisez uniquement le modèle de constructeur.

est également rarement utilisé seul.

6.3.3Héritage combiné

Implémentation de la chaîne de prototypes Attributs du prototype et Héritage de méthodes

Emprunt de constructeurs pour implémenter Héritage de propriétés d'instance

La méthode d'héritage la plus couramment utilisée

6.3.4Héritage prototypique(Lecture)

Le constructeur n'est pas utilisé Les types conservés peuvent être utilisés, mais ils partageront des attributs de type référence comme le mode prototype.

6.3.5Héritage parasitaire(Lecture)

Le constructeur n'est pas pris en compte Peut être utilisé Mais la réutilisation des fonctions ne peut pas être réalisée

6.3.6Héritage combinatoire parasitaire(Lecture)

Problème de composition héritage : le constructeur du supertype est appelé deux fois, ce qui entraîne des propriétés en double dans l'instance et le prototype.

L'héritage combiné parasite résout ce problème et devient le paradigme d'héritage le plus idéal.

Chapitre 7 Expression de fonction

Comment définir des fonctions :

Déclaration de fonction(La déclaration de fonction est promue avec nom)

Expression de fonction( nom est une fonction anonyme vide/Les expressions de fonction générales nommées sont des fonctions anonymes)

7.1Récursion

Le mode strict ne peut pas être utilisé arguments.callee Vous pouvez utiliser des expressions de fonction nommées.

7.2Fermeture : Une fonction qui a accès à une variable dans la portée d'une autre fonction

Auto-résumé : les fermetures sont des fonctions, des fonctions généralement anonymes sont utilisées

1 Les fermetures peuvent accéder aux variables dans les fonctions externes renvoyées.

2.L'objet actif d'une autre fonction sera sauvegardé jusqu'à ce que la chaîne de portée de la fermeture soit détruite.

7.2.1Fermetures et variables

Effets secondaires : les fermetures sont enregistrées sur la chaîne de portée est l'objet variable entier, donc la variable renvoyée est la dernière valeur enregistrée.

Par exemple, dans la boucle for, des situations insatisfaisantes se produiront.

7.2.2À propos decetObjet

L'objet this dans la fermeture. La fermeture peut être placée sur l'objet global dans certains cas particuliers, afin que this change automatiquement. .

7.2.3Fuite de mémoire

Utilisez des fermetures pour assurer un recyclage normal de la mémoire

7.3Imiter la portée au niveau du bloc

Utiliser une fonction auto-exécutable anonyme pour imiter.

Fonction d'auto-résumé :

1.Elle sera détruite après exécution interne.

2.Les fonctions anonymes auto-exécutables peuvent réduire la pollution des méthodes et propriétés globales.

La fermeture a un problème de mémoire, et il est très confortable d'utiliser cette combinaison.

7.4Variables privées

Tout sur l'objet est public Tout dans la fonction est privé

Créer la méthode publique de la fonction par fermeture(Méthode privilégiée) --------- est utilisé pour obtenir des variables privées

créées dans le constructeur                                                                                                                                                                                                                                 🎜>this.****** = function(){ **** }; Mais chaque instanciation reconstruira un ensemble de méthodes, ce qui est un gaspillage.

7.4.1Variables privées statiques                                                       Si une instance ne possède pas ses propres propriétés privées

utiliser statiquement la

portée privée

construction globale par fermeture Créer des méthodes privilégiées à l'intérieur du prototype de la fonction.

Améliore la réutilisabilité du code, mais chaque instance n'a pas ses propres variables privées. (Parce que cela s'appelle une variable privée statique )

Utilisez des variables d'instance ou des variables privées statiques, selon les besoins spécifiques .

7.4.2Mode module                                                                                  Littéral Un objet d'instance

Créer un objet privé variables et méthodes privilégiées pour un singleton

(

Singleton : un objet avec une seule instance

) Définir des variables et des méthodes privées à l'intérieur la fonction anonyme, puis utilisez un objet littéral comme valeur de retour de la fonction.

7.4.3

Mode module amélioré

doit être une instance d'un certain type , certaines propriétés ou méthodes doivent également être ajoutées.

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!

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