Ce chapitre n'explique pas certains principes sous-jacents de JS en profondeur, tels que ce pointeur, la portée et le prototype. Cela implique certains d'entre eux qui sont propices à la simplification du code et à l'amélioration de l'efficacité de l'exécution pendant le développement, ou ils peuvent être utilisés comme méthode empirique. La longueur n'est pas longue, et de petites étapes vous permettent de lire l'intégralité de l'article et de vivre la joie de la programmation.
Obtenez des nombres aléatoires dans deux intervalles
La copie de code est la suivante:
fonction getrandomnum (min, max) {// obtenir des nombres aléatoires dans deux intervalles
// @ 南南南南南南 suggère que le premier paramètre est supérieur au deuxième paramètre, donc l'ajout d'un jugement est plus fiable
if (min> max)
Max = [min, min = max] [0]; // échange rapidement deux valeurs variables
var range = max - min + 1;
var rand = math.random ();
return min + math.floor (rand * gamme);
};
Renvoyer un paramètre positif / négatif au hasard
La copie de code est la suivante:
fonction getrandomxie (num) {// renvoie un paramètre positif / négatif aléatoire
num = nouveau nombre (num);
if (math.random () <= 0,5)
num = -num;
retour num;
}
SetInterVal () ou setTimeout () Timer Fonction Pass Paramètre
La copie de code est la suivante:
var s = 'je suis un paramètre';
fonction fn (args) {
console.log (args);
}
var a = setInterval (fn (s), 100); // Erreur xxxxx xxxxxx
var b = setInterval (function () {// correct, appelez la fonction chronométrée avec une fonction anonyme
fn (s);
}, 100);
setInterVal () ou setTimeout () temporaire appelé récursivement
La copie de code est la suivante:
var s = true;
fonction fn2 (a, b) {// étape 3
if (s) {
ClearInterval (a);
ClearInterval (b);
}
};
fonction fn (a) {// étape 2
var b = setInterval (function () {
fn2 (a, b) // passer en deux minuteries
}, 200)
};
var a = setInterval (function () {// étape 1
fn (a); // b représente la minuterie elle-même, qui peut être transmise sur les paramètres du siège
}, 100);
Convertir la chaîne en numéro
La copie de code est la suivante:
// pas besoin de nouveau numéro (chaîne) ni de numéro (chaîne), il suffit de soustraire les zéros de la chaîne
var str = '100'; // str: chaîne
var num = str - 0; // num: nombre
Jugement de valeur nul
La copie de code est la suivante:
var s = ''; // chaîne vide
Si (! S) // La chaîne vide est convertie en booléen false par défaut, et peut être rédigé directement dans l'énoncé du jugement
if (s! = null) // mais vide string! = null
si (s! = Undefined) // String vide est aussi! = Undefined
IE Browser ParseInt () Méthode
La copie de code est la suivante:
// La conversion suivante est de 0 dans IE, et d'autres navigateurs sont 1. Ceci est lié à l'explication du navigateur IE sur les chiffres.
var inum = parseInt (01);
// donc, l'écriture compatible est
var num = parseInt (nouveau numéro (01));
Firebug a commodément débogue JS
La copie de code est la suivante:
// Firebug a un objet de console intégré, fournissant des méthodes intégrées pour afficher des informations
/ **
* 1: Console.log (), qui peut être utilisé à la place d'Alert () ou Document.Write (), prend en charge la sortie d'espace réservé, les caractères (% s), les entiers (% D ou% I), les nombres de points flottants (% f) et les objets (% O). Par exemple: Console.log ("% d Année% D Mois% D Day", 2011, 3, 26)
* 2: S'il y a trop d'informations, vous pouvez les afficher en groupes. Les méthodes utilisées sont console.group () et console.groupend ()
* 3: console.dir () peut afficher toutes les propriétés et méthodes d'un objet
* 4: console.dirxml () est utilisé pour afficher le code HTML / XML contenu dans un nœud d'une page Web
* 5: Console.Asersert () Affirmez, utilisé pour déterminer si une expression ou une variable est vraie
* 6: console.trace () est utilisé pour suivre la piste d'appel de la fonction
* 7: console.time () et console.timeend () sont utilisés pour afficher l'heure d'exécution du code
* 8: L'analyse des performances (Profiler) consiste à analyser le temps d'exécution de chaque partie du programme pour découvrir le goulot d'étranglement. La méthode utilisée est console.profile () .... fn .... console.profileend ()
* /
Prenez rapidement les millisecondes actuelles
La copie de code est la suivante:
// t == La valeur de la milliseconde du système actuelle, Raison: l'opérateur + signe sera appelé, et la méthode de date de valeur () sera appelée.
var t = + new Date ();
Prenez rapidement des bits entiers décimaux
La copie de code est la suivante:
// x == 2, les valeurs X suivantes sont 2 et les nombres négatifs peuvent également être convertis
var x = 2.00023 | 0;
// x = '2.00023' | 0;
Deux valeurs variables échangent (pas de montant intermédiaire )
La copie de code est la suivante:
var a = 1;
var b = 2;
a = [b, b = a] [0]
alerte (a + '_' + b) // Les valeurs du résultat 2_1, a et b ont été échangées.
Logique ou '||' opérateur
La copie de code est la suivante:
// b n'est pas nul: a = b, b est nul: a = 1.
var a = b || 1;
// L'utilisation la plus courante consiste à transmettre des paramètres pour une méthode de plug-in et à obtenir des éléments cibles de l'événement: événement = événement || window.event
// IE a un objet Window.Event, mais FF ne le fait pas.
Seul l'objet méthode a des propriétés prototypes
La copie de code est la suivante:
// La méthode a la propriété Prototype Prototype d'objet, tandis que les données d'origine n'ont pas cette propriété, comme var a = 1, A n'a pas de propriété prototype
fonction de fonction () {} // constructeur humain
Personne.prototype.run = function () {alert ('run ...'); } // Méthode d'exécution du prototype
Personne.run (); // erreur
var p1 = new personne (); // La méthode d'exécution du prototype ne sera attribuée à P1 que lorsque le nouvel opérateur est utilisé.
p1.run (); // courir...
Obtenez rapidement le jour de la semaine
La copie de code est la suivante:
// L'heure actuelle du système de calcul est la semaine
var semaine = "Aujourd'hui est: semaine" + "jour un, deux, trois, quatre, cinq, six" .Charat (new Date (). getday ());
Biais de fermeture
La copie de code est la suivante:
/ **
* CLOSE: Tout corps de méthode JS peut être appelé une fermeture, non seulement cela se produit si une fonction en ligne fait référence à un certain paramètre ou propriété d'une fonction externe.
* Il a une portée indépendante, dans laquelle plusieurs sous -copes peuvent exister (c'est-à-dire des méthodes imbriquées de méthode), et enfin la portée de fermeture est la portée de la méthode la plus externe.
* Il contient les paramètres de la méthode de la lui-même et les paramètres de la méthode de toutes les fonctions intégrées. Par conséquent, lorsqu'une fonction intégrée a une référence à l'extérieur, la portée de la référence est la portée de la méthode (de niveau supérieur) où se trouve la fonction de référence.
* /
fonction a (x) {
fonction b () {
alerte (x); // Référence des paramètres de fonction externe
}
retour b;
}
var run = a ('run ...');
// en raison de l'expansion de la portée, les variables de la fonction externe A peuvent être référencées et affichées
courir(); // alert (): exécuter ..
Obtenez la chaîne du paramètre d'adresse et rafraîchisse
La copie de code est la suivante:
// Vous obtenez un point d'interrogation? Le contenu suivant comprend le point d'interrogation
var x = window.location.search
// obtient le contenu derrière le numéro d'alarme #, y compris le numéro #
var y = window.location.hash
// Un actualisation automatique de la page Web peut être réalisée avec la minuterie
window.location.reload ();
Nul et indéfini
La copie de code est la suivante:
/ **
* Le type non défini n'a qu'une seule valeur, c'est-à-dire non définie. Lorsque la variable déclarée n'a pas été initialisée, la valeur par défaut de la variable n'est pas définie.
* Le type nul n'a également qu'une seule valeur, c'est-à-dire null. Null est utilisé pour représenter un objet qui n'a pas encore existé, et est souvent utilisé pour représenter une fonction qui tente de renvoyer un objet qui n'existe pas.
* Ecmascript estime que non défini est dérivé de Null, ils sont donc définis comme égaux.
* Mais, si dans certains cas, nous devons faire la distinction entre ces deux valeurs, que devons-nous faire? Les deux méthodes suivantes peuvent être utilisées
* Lorsque vous portez des jugements, il est préférable d'utiliser '===' Un jugement de type fort lors de la jugement si l'objet a une valeur selon les besoins.
* /
var a;
alerte (a === null); // faux, car A n'est pas un objet vide
alerte (a === Undefined); // vrai, comme A n'est pas initialisé, la valeur n'est pas définie
// Introduire
alerte (null == non défini); // true, parce que l'opérateur '==' effectuera une conversion de type,
// De la même manière
alerte (1 == '1'); // vrai
alert (0 == false); // vrai, faux convertit en type de numéro 0
Ajouter dynamiquement des paramètres à la méthode
La copie de code est la suivante:
// Méthode A a un paramètre de plus 2
fonction a (x) {
var arg = array.prototype.push.call (arguments, 2);
alert (arguments [0] + '__' + arguments [1]);
}
Personnaliser le style de bordure sélectionné
La copie de code est la suivante:
<! - Copiez sur la page pour essayer l'effet, vous pouvez personnaliser le style à volonté ->
<Span Style = "Border: 1px Solid Red; Position: Absolute; Overflow: Hidden;" >
<select style = "margin: -2px;">
<option> Style de bordure de sélection personnalisé </opoption>
<option> 222 </opoption>
<option> 333 </opoption>
</lect>
</span>
La palette de couleurs la plus simple
La copie de code est la suivante:
<! - JS pour extraire sa valeur de valeur et définir n'importe quelle couleur sur n'importe quel objet ->
<Type d'entrée = couleur />
Fonctions, les objets sont le tableau?
La copie de code est la suivante:
var anobject = {}; // un objet
anobject.aproperty = "propriété de l'objet"; // une propriété de l'objet
anobject.amethod = function () {alert ("méthode d'objet")}; // une méthode de l'objet
// Concentrez-vous sur ce qui suit:
alert (anObject ["APROPERTY"]); // Vous pouvez accéder à l'attribut en tant que tableau avec le nom d'attribut comme indice
anobject ["amethod"] (); // Vous pouvez appeler une méthode comme un tableau avec le nom de la méthode comme indice
pour (var s dans anobject) // transférer toutes les propriétés et méthodes de l'objet pour le traitement itératif
alert (s + ”est a” + typeof (anobject [s]));
// c'est le même pour l'objet de type de fonction:
var afunction = function () {}; // une fonction
afunction.aproperty = "propriété de fonction"; // une propriété de la fonction
afunction.amethod = function () {alert ("méthode de fonction")}; // une méthode de fonction
// Concentrez-vous sur ce qui suit:
alerte (afonction ["aprperty"]); // Vous pouvez accéder aux propriétés comme le tableau avec le nom d'attribut comme indice
Afonction ["Amethod"] (); // Vous pouvez appeler une méthode en utilisant le nom de la méthode comme indice lorsqu'une fonction est utilisée comme indice pour un tableau
pour (var s en cas) // itérater toutes les propriétés et méthodes de la fonction de traversée pour le traitement itératif
alerte (s + ”est un” + typeof (afunction [s]));
La copie de code est la suivante:
/ **
* Oui, les objets et les fonctions sont accessibles et traités comme des tableaux, en utilisant des noms d'attribut ou des noms de méthode comme indices.
* Alors, devrait-il être considéré comme un tableau ou un objet? Nous savons que les tableaux doivent être considérés comme des structures de données linéaires. Les structures de données linéaires ont généralement certaines règles, qui conviennent aux opérations d'itération par lots unifiées, etc., ce qui est un peu comme les vagues.
* Les objets sont des structures de données discrètes qui conviennent pour décrire des choses dispersées et personnalisées, un peu comme les particules.
* Par conséquent, nous pouvons également demander: les objets sont-ils dans des ondes ou des particules JavaScript? S'il y a une théorie quantique d'objets, la réponse doit être: la dualité onde-particules!
* Par conséquent, les fonctions et les objets en JavaScript ont à la fois les caractéristiques des objets et des tableaux. Le tableau ici s'appelle un "dictionnaire", une collection de paires de valeurs de nom qui peuvent être arbitrairement étirées et condensées. En fait, la mise en œuvre interne de l'objet et de la fonction est une structure de dictionnaire, mais cette structure de dictionnaire montre une apparence riche à travers une grammaire rigoureuse et exquise. Tout comme la mécanique quantique utilise des particules pour expliquer et faire face aux problèmes à certains endroits, tandis que les vagues pour expliquer et faire face aux problèmes dans d'autres. Vous pouvez également choisir librement d'utiliser des objets ou des tableaux pour expliquer et faire face aux problèmes en cas de besoin. Tant que vous êtes bon à saisir ces merveilleuses fonctionnalités de JavaScript, vous pouvez écrire beaucoup de code concis et puissant.
* /
Cliquer sur une zone vide peut déclencher un certain élément pour fermer / masquer
La copie de code est la suivante:
/ **
* Parfois, la page dispose d'un menu déroulant ou quelque chose, ce qui oblige l'utilisateur à le masquer lorsque vous cliquez sur un blanc ou en cliquant sur d'autres éléments.
* Un événement de clic de document global peut être déclenché
* @param {objet} "Objet cible"
* /
$ (document) .click (fonction (e) {
$ ("objet cible"). Hide ();
});
/ **
* Mais un inconvénient est que lorsque vous cliquez sur l'élément et que vous voulez qu'il l'affiche
* Si vous n'empêchez pas l'événement de bouillonner à l'objet de document global cliquant dans le temps, la méthode ci-dessus sera exécutée
* /
$ ("Objet cible"). Cliquez sur (fonction (événement) {
événement = événement || window.event;
event.stoppropagation (); // En cliquant sur l'objet cible, empêchez l'événement de bouillonner dans le temps
$ ("Objet cible"). Toggle ();
});
Ce qui précède est certaines méthodes JavaScript couramment utilisées par moi. Ils peuvent être enregistrés et utilisés directement pendant le développement. Ceci est également recommandé pour les amis dans le besoin.