Deux, fondation JS
1. Quels types de données sont renvoyés par javascript typeof
object number function boolean underfind string
typeof null;//object
typeof isNaN;//
typeof isNaN(123)
typeof [];//object
Array.isARRAY(); es5
toString.call([]);//”[object Array]”
var arr=[];
arr.constructor;//Array
2. Donnez des exemples de 3 types de conversions de types forcées et de 2 types de conversions de types implicites?
强制(parseInt,parseFloat,Number())
隐式(==)
1==”1”//true
null==undefined//true
3. La différence entre split () et join ()
Le premier consiste à couper sous la forme d'un tableau, le
second est de convertir le tableau en une chaîne
4. Méthode de tableau pop () push () unshift () shift ()
push () add
pop () tail supprimer
unshift () head add
shift () head delete
5. Quelle est la différence entre la liaison d'événements et les événements ordinaires
Liaison d'événement traditionnelle et événements conformes au W3C
div1.onclick=function(){
};
<button onmouseover=""></button>
1. Si deux ou plusieurs événements du même type sont liés au même élément, la liaison suivante remplacera la liaison précédente
2. Flux d'événements DOM, étape de capture d'événements, étape d'élément cible => étape prise en charge de la création de bulles d'événement
addEventListener
1. Si deux ou plusieurs événements du même type sont liés au même élément, la liaison sera déclenchée à son tour
2. Prise en charge du flux d'événements DOM
3. Aucun sur le front-end n'est requis pour la liaison d'événements et le transfert de paramètres
addEventListener(“click”,function(){},true);//此时的事件就是在事件冒泡阶段执行
ie9 start, ie11 edge: addEventListener
Avant ie9: attachEvent / detachEvent
1. Le préfixe on est requis pour transmettre le paramètre de type d'événement.
2. Cette méthode ne prend en charge que le bullage d'événement et ne prend pas en charge la capture d'
événement . La liaison d'événement consiste à enregistrer des événements sur des éléments spécifiques, des événements normaux Se réfère à événements qui peuvent être utilisés pour s'inscrire
6. La différence entre le flux d'événements IE et DOM
1. L'ordre d'exécution est différent,
2. Les paramètres sont différents
3. L'événement est ajouté ou non
4. Cela indique le problème
Avant IE9: attachEvent ("onclick"), detachEvent ("onclick")
IE9 a commencé à être le même que le flux d'événements DOM, les deux sont addEventListener
7. Quelles sont les méthodes d'écriture compatibles avec IE et les normes?
var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement||ev.target
8. La différence entre appeler et appliquer
Call et apply ont le même point: les
deux doivent utiliser une méthode qui n'appartient pas à un objet et laisser cet objet s'exécuter
toString.call([],1,2,3)
toString.apply([],[1,2,3])
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
9, b hérite de la méthode de a
Point de test: plusieurs modes d'
héritage 1. Héritage de prototype:
2. Héritage de constructeur:
3. Appel, appliquez pour obtenir l'héritage:
plusieurs modes d'héritage
10. JavaScript ce pointeur, fermeture, portée
this: pointe vers le contexte appelant
Fermeture: la portée interne peut accéder aux variables de la portée externe
Portée: la définition d'une fonction ouvre une portée locale, et l'ensemble de l'environnement d'exécution js a une portée globale
11. Qu'est-ce que la délégation d'événements
La liaison d'événement addEventLisntener / attachEvent conforme à la norme W3C
vous permet d'utiliser le principe du bullage d'événements pour laisser vos propres événements déclenchés être exécutés par leurs éléments parents à la place!
12. Qu'est-ce qu'une fermeture, quelles sont ses caractéristiques et quel impact a-t-elle sur la page?
Les fermetures sont des fonctions qui peuvent lire les variables internes d'autres fonctions.
Inconvénients des fermetures: une mauvaise utilisation des fonctions de fermeture entraînera des fuites de mémoire, car les variables définies dans la fonction wrapper référencée dans la fermeture ne seront jamais libérées, nous devrions donc libérer la fonction de fermeture à temps lorsque cela est nécessaire
13. Comment empêcher le bouillonnement d'événements et les événements par défaut
e. stopPropagation();//标准浏览器
event.canceBubble=true;//ie9之前
//阻止默认事件:
//为了不让a点击之后跳转,我们就要给他的点击事件进行阻止
return false
e.preventDefault();
14. Ajouter, supprimer, remplacer et insérer dans un contact
obj.appendChild()
obj.insertBefore() //原生的js中不提供insertAfter();
obj.replaceChild()//替换
obj.removeChild()//删除
15. Objets natifs de JavaScript, objets intégrés et objets hôtes
L'objet local est array, obj, regexp, etc., qui peut être instancié avec new, et l'
objet intégré est gload Math, etc. qui ne peut pas être instancié. L'
hôte est le document, la fenêtre, etc. du navigateur.
16. La différence entre le chargement de document et le document prêt
Document.onload exécute js
window.onload après le chargement de la structure et du style: non seulement après le chargement de la structure et du style, mais également après l' exécution de tous les fichiers de ressources tels que les styles et les images. L'événement window.onload sera déclenché après tout chargement. L'
espèce indigène Document.ready n'a pas cette méthode, il y a $ (). ready (function) dans jquery
17. La différence entre " ==
" et " ===
"
Le premier convertira automatiquement le type, le
second ne le fera pas
1 == "1"
null == indéfini
=== Commencez par évaluer les types de données sur les côtés gauche et droit. Si les types de données sont incohérents, renvoyez false directement
avant de juger les valeurs des deux côtés.
18. Politique de même origine de javascript
Un script ne peut lire que les propriétés des fenêtres et des documents de la même source. La même source fait ici référence à la combinaison du nom d'hôte, du protocole et du numéro de port
http, ftp:
nom d'hôte du protocole ;
nom du port localhost : 80: protocole http Port par défaut
https: Le port par défaut est
le problème causé par la stratégie 8083 de même origine: les requêtes Ajax sous différents noms de domaine ne peuvent pas être réalisées.
Si vous souhaitez demander des fichiers js ou des données json à d'autres sources, vous pouvez utiliser jsonp pour le résoudre.
19. Ecrire une méthode de déduplication de tableau
var arr = [1,1,3,4,2,4,7];
=> [1,3,4,2,7]
Une implémentation relativement simple est:
1. Créez d'abord un tableau vide pour le stockage Le résultat final
2, boucle chaque élément dans le tableau d'origine
3, puis boucle chaque élément deux fois pour déterminer s'il existe le même élément, sinon, placez cet élément dans le nouveau tableau
4. Renvoyez ce nouveau tableau
function oSort(arr) {
var result ={};
var newArr=[];
for(var i=0;i<arr.length;i++){
if(!result[arr]) {
newArr.push(arr)
result[arr]=1
}
}
return newArr
}