Maison > Questions et réponses > le corps du texte
JavaScript
Prototype JavaScript, chaîne de prototypes ? Quelles sont les caractéristiques ?
Que fait eval ?
Sa fonction est d'analyser la chaîne correspondante dans le code JS et de l'exécuter ;
Vous devez éviter d'utiliser eval, qui est dangereux et très consommateur de performances (deux fois, une fois pour analyser dans une instruction JS et une fois pour exécuter).
La différence entre nul et indéfini ?
Écrivez une fonction d'écoute d'événement générale.
// ensemble d'outils d'événement (événement), source : github.com/markyun
markyun.Event = {
à travers à travers à travers à travers de ‐ à
‐ fn= document ; = function() { utiliser utiliser utiliser utiliser utiliser utiliser utiliser ‐ ‐ ‐ ‐ ‐ window.onload = function() { ;
// Paramètres : élément d'opération, nom de l'événement, gestionnaire d'événement
AddEvent : function(element , tapez, handler) {
attachEvent) element['on' + type] = handler;
// RemoveEvent : Function (Element, Type, Handler) {
if (Element.removenentListener ) {
Element.removenentListener (Type, Handler, FALSE);
} ELS e if (Element.datachevent) {
element.detachEvent('on' + type, handler);
} else {
element['on' + tapez] = nul;},/ // Empêcher les événements (principalement dans le bouillonnement d'événements, car IE ne prend pas en charge la capture d'événements)
StopPropagation : Function (EV) {
IF (Ev.stopPropagation) {
Ev.stoppropagation (
} Else {
); EV .cancelBubble = true;
event.preventDefault();
event.returnValue = false; // Obtenez la référence à l'objet événement et obtenez toutes les informations sur l'événement, assurez-vous que l'événement peut être utilisé à tout moment
; getEvent: function(e) { var ev = e || window.event;
while (c) { ev = c.arguments[0];
c = c.caller ;
}
}
}
}
}
Scénarios applicables pour Node.js ?
Haute simultanéité, chat, transmission de messages en temps réel
Présentation des types de données de base de js.
numéro, chaîne, booléen, objet, non défini
Comment implémenter l'héritage en Javascript ?
Grâce à des prototypes et des constructeurs
["1", "2", "3"].map(parseInt) Quelle est la réponse ?
[1, NaN, NaN] Parce que parseInt nécessite deux paramètres (val, radix) mais la carte en passe 3 (élément, index, tableau)
Comment créer un objet ? (Dessinez la carte mémoire de cet objet)
function Person(name, age) {
this.name = name;
this.age = age;
this.sing = function() { alert ( this.name) }
}
Parlons de la compréhension de cet objet.
Il s'agit d'un mot-clé en js. La valeur de ceci changera à mesure que la fonction est utilisée dans différentes situations.
Mais il y a un principe général, c'est-à-dire que ceci fait référence à l'objet qui appelle la fonction.
Il s'agit généralement de l'objet global Global. En tant qu'appel de méthode, this fait référence à cet objet. Quel est l'événement ? Quelle est la différence entre les mécanismes événementiels d’IE et de Firefox ? Comment arrêter de bouillonner ?
1. Une opération que nous effectuons sur la page web (certaines opérations correspondent à plusieurs événements). Par exemple : lorsque l'on clique sur un bouton, un événement sera généré. est un comportement qui peut être détecté par JavaScript.
3. ev.stopPropagation();
Qu'est-ce que la fermeture (closure) et pourquoi devrions-nous l'utiliser ?
Après l'exécution de say667(), les variables internes de la fermeture say667() existeront, mais les variables internes de la fonction interne de fermeture n'existeront pas, ce qui empêche le mécanisme de récupération de place de Javascript GC de récupérer les ressources occupées par say667(), parce que say667 L'exécution de la fonction interne de () dépend des variables de say667(). Il s'agit d'une description très simple de ce que fait une fermeture.
function say667() {
// Variable locale qui se termine dans la fermeture var num = 666;
var sayAlert = function() { alert(num }
) num++;
return sayAlert;
}
var sayAlert = say667();
sayAlert()//Le résultat de l'exécution devrait apparaître 667
"use strict" Qu'est-ce que cela signifie ? de l'utiliser ?
Comment déterminer si un objet appartient à une certaine classe ?
Utilisez instanceof (à améliorer)
if(a instanceof Person){
alert('yes'); }
Que fait exactement le nouvel opérateur
1. Créer un objet vide, et ceci ? La variable fait référence à l'objet et hérite également du prototype de la fonction.
3. L'objet nouvellement créé est référencé par this, et ceci est renvoyé implicitement à la fin.
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
En Javascript, il existe une fonction qui ne recherchera jamais le prototype lors de la recherche d'objets pendant l'exécution. Quelle est la fonction ? Connaissez-vous
hasOwnProperty
JSON (JavaScript Object Notation) est un format léger d'échange de données.
{'age':'12', 'name':'back'}
Quels sont les moyens de retarder le chargement en js ?
defer et async, création dynamique de la méthode DOM (la plus couramment utilisée), chargement asynchrone de js à la demande
ajax Qu'est-ce que c'est ?
La différence entre synchronisation et asynchrone ?
Comment résoudre les problèmes inter-domaines ?
jsonp, iframe, window.name, window.postMessage, configuration de la page proxy sur le serveur
Comment le rendre modulaire ? = function() {
{
AMD (Modules/Définition Asynchrone), CMD (Définition de Module Commun) Différence normative ?
Quelles sont les méthodes de chargement asynchrone ?
(1) différer, ne prend en charge que IE
(2) async :
(3) Créer un script, insérer dans DOM, rappeler après le chargement
La différence entre document.write et innerHTML
document.write uniquement Peut redessiner la page entière
innerHTML peut redessiner une partie de la page
Quelle est la différence entre .call() et .apply() ?
Dans l'exemple, add est utilisé pour remplacer sub, add.call(sub,3,1) == add(3,1), donc le résultat en cours d'exécution est : alert(4);
Remarque : fonctions en js ; sont en fait des objets, le nom de la fonction est une référence à l'objet Function.
function add(a,b)
{
}
function sub(a,b)
add.call(sub,3, 1); Quelle est la différence entre Jquery et jQuery UI ?
*jQuery est une bibliothèque js qui fournit principalement des sélecteurs, des modifications de propriétés, des liaisons d'événements, etc.
*jQuery UI est un plug-in conçu sur la base de jQuery et tirant parti de l'extensibilité de jQuery.
Fournit certains éléments d'interface couramment utilisés, tels que les boîtes de dialogue, les comportements de glissement, les comportements de redimensionnement, etc.
Avez-vous vu le code source de JQuery ? Pouvez-vous brièvement parler de son principe de mise en œuvre ?
Comment convertir un tableau en chaîne json dans jquery puis inversement ?
Cette fonction n'est pas fournie dans jQuery, vous devez donc d'abord écrire deux extensions jQuery :
$.fn.stringifyArray = function(array) {
} return JSON.stringify(array)
}
Return json.parse (Array)}}
puis appelez :
$ ("") StringifyArray (Array)
Méthode optimisée pour jQuery ?
*Les performances de la sélectivité basée sur les classes sont très coûteuses par rapport au sélecteur d'identifiant car elle doit parcourir tous les éléments du DOM.
*DOM fréquemment utilisé, mettez-le d'abord en cache, puis exploitez-le. Il est préférable d'utiliser l'appel en chaîne de Jquery.
Par exemple : var str=$("a").attr("href");
*for (var i = size; i < arr.length; i++) {}
La boucle for recherche à chaque fois For la propriété .length du tableau (arr), définir une variable pour stocker ce nombre au démarrage de la boucle peut rendre la boucle plus rapide :
for (var i = size, length = arr.length; i < length; i++ ) {}
Levage de portée et de déclaration de variable en JavaScript ?
Comment écrire du Javascript haute performance ?
Quelles opérations provoqueront des fuites de mémoire ?
Une fuite de mémoire est tout objet qui persiste après que vous ne le possédez plus ou n'en avez plus besoin.
Le garbage collector analyse périodiquement les objets et compte le nombre d'autres objets qui ont des références à chaque objet. Si un objet a 0 référence (aucun autre objet n'y fait référence) ou si la seule référence à l'objet est circulaire, alors la mémoire de l'objet peut être récupérée.
Si le premier paramètre de setTimeout utilise une chaîne au lieu d'une fonction, cela provoquera une fuite de mémoire.
Fermeture, journal de la console, boucle (lorsque deux objets se réfèrent et se retiennent, une boucle se produit)
JQuery peut lier plusieurs événements à un objet en même temps. Comment cela est-il implémenté ?