JavaScript Review sketch - 1

Tankeke 2021-09-15 05:01:48
javascript review sketch


Chaîne prototype

ChaqueJavaScriptObjet(nullException)Un autre objet est associé au moment de la création,Cet objet est ce qu'on appelle un prototype,Chaque objet est tiré du prototype"Succession"Propriétés.

image.png

Peut être utiliséObject.getPrototypeOf()Pour obtenir le prototype d'un objet

Succession

segmentfault.com/a/119000001… Mode d'héritage

  1. Héritage de la chaîne prototype
  • Qui permet directement au constructeur d'enfantsprototypeParent pointant vers le parent
  • Impossible de transférer les paramètres,Pas assez flexible
function Parent () {
this.name = 'kevin';
}
Parent.prototype.getName = function () {
console.log(this.name);
}
function Child () {
}
Child.prototype = new Parent();
var child1 = new Child();
console.log(child1.getName()) // kevin
Copier le Code

2.Emprunter l'héritage du constructeur

  • Constructeur emprunté à la classe mère ,Faire exécuter le constructeur de la classe mère lorsque la classe enfant est créée,Utilisercall Pour rendre cette fonction thisPointer vers la Sous - classe
  • Les méthodes sont définies dans le constructeur, Chaque fois Parent.call(this) Pour créer toutes les méthodes
function Parent () {
this.names = ['kevin', 'daisy'];
}
function Child () {
Parent.call(this);
}
var child1 = new Child();
child1.names.push('yayu');
console.log(child1.names); // ["kevin", "daisy", "yayu"]
var child2 = new Child();
console.log(child2.names); // ["kevin", "daisy"]
Copier le Code

3.Héritage combiné

  • Combinaison de l'héritage de la chaîne prototype et de l'héritage classique des épées jumelles
function Parent (name) {
this.name = name;
this.colors = ['red', 'blue', 'green'];
}
Parent.prototype.getName = function () {
console.log(this.name)
}
function Child (name, age) {
Parent.call(this, name);
this.age = age;
}
Child.prototype = new Parent();
Child.prototype.constructor = Child;
Copier le Code
  • Inconvénients:Le constructeur de la classe mère est exécuté deux fois lorsque la Sous - classe instancie et modifie la chaîne prototype

Optimisation:Prends le dessus.Child.prototype = new Parent()Remplacer parObject.create(Person.prototype), Cela permet d'utiliser le constructeur moins d'une fois , L'héritage peut également être complété

//......Comme ci - dessus
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
Copier le Code
  1. ES6MoyenneclassL'héritage de

Je comprends., Doit être appelé en premier super Méthode pour appeler le constructeur de la classe mère

Champ d'application

Le champ d'application est divisé en deux catégories:

  • Syntaxe(Statique)Champ d'application: La portée de la fonction est déterminée au moment de la définition
  • Lexicographie (Dynamique)Champ d'application:Le rôle de la fonction n'est déterminé que lorsque l'appel est exécuté

Exécuter la pile de contexte

github.com/mqyqingfeng…

  1. Créer une pile de contexte global au début ,Chaque fois qu'une fonction est rencontrée, un contexte d'exécution est créé pour appuyer sur la pile,Une fois chaque fonction terminée, la pile d'exécution courante est éjectée,Notez que les fonctions ne sont pressées dans la pile que lorsqu'elles sont exécutées,Par exemple, le code suivant

Code un

var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
Copier le Code

Code II

var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f;
}
checkscope()();
Copier le Code

Les deux morceaux de code sont exécutés de la même façon ( Ont été créés en un seul endroit , Selon la portée statique , Ils auront le premier de l'extérieur. scope), Mais la façon dont la pile est appelée est différente

ECStack.push(<checkscope> functionContext);
ECStack.push(<f> functionContext);
ECStack.pop();
ECStack.pop();
Copier le Code
ECStack.push(<checkscope> functionContext);
ECStack.pop();
ECStack.push(<f> functionContext);
ECStack.pop();
Copier le Code

Objet variable

Chaque contexte d'exécution a trois attributs importants

  • Objet variable(Variable object,VO)
  • Chaîne de portée(Scope chain)
  • this

L'objet variable est une portée de données liée au contexte d'exécution,Les variables et les déclarations de fonctions définies dans le contexte sont stockées.Un objet variable dans un contexte global est un objet global

Contexte de la fonction

Lorsque vous entrez le contexte d'exécution , Le Code n'est pas encore exécuté ,

Un objet variable contient les éléments suivants:

  1. Tous les paramètres formels de la fonction ( Si le contexte de la fonction )
    • Les propriétés d'un objet variable composé d'un nom et d'une valeur correspondante sont créées
    • Aucun argument , La valeur de la propriété est définie à undefined
  2. Déclaration de la fonction
    • Par nom et valeur correspondante (Objet de fonction(function-object)) Les attributs qui composent un objet variable sont créés
    • Si l'objet variable a déjà une propriété avec le même nom, Remplacer complètement cette propriété
  3. Déclaration des variables
    • Par nom et valeur correspondante (undefined) Les attributs qui composent un objet variable sont créés ;
    • Si le nom de la variable est le même que le paramètre ou la fonction de forme déjà déclaré,La Déclaration de la variable n'interfère pas avec les attributs qui existent déjà

Au stade de l'exécution du Code , Exécuter le code dans l'ordre , Selon le Code , Modifier les valeurs des objets variables Résumer le processus ci - dessus

  1. L'initialisation de l'objet variable pour le contexte global est un objet global
  2. L'initialisation de l'objet variable dans le contexte de la fonction ne comprend que Arguments Objet
  3. Des paramètres formels sont ajoutés à l'objet variable lors de l'entrée dans le contexte d'exécution、Déclaration de la fonction、 Valeurs initiales des attributs, telles que les déclarations de variables
  4. Au stade de l'exécution du Code , La valeur de propriété de l'objet variable est modifiée à nouveau

Chaîne de portée

La fonction a un attribut interne [[scope]], Lorsque la fonction est créée , Tous les objets de la variable parent y sont enregistrés ,Cette chaîne scope est copiée lorsque la fonction est exécutée, Et quand l'objet variable est généré, ,L'objet actif actuel est pressé en haut de la chaîne scope actuellement copiée

Fermeture

FermetureEst une fonction qui peut accéder à une variable dans le champ d'application d'une autre fonction( Fonctions définies à l'intérieur d'une fonction ) Sujet classique

for(var i =0; i<5; i++) {
setTimeout(function(){
console.log(i);
},1000);
}
// Pourquoi la production est - elle complète? 5
// Code de synchronisationfor Boucle d'abord , Est global lorsque le Code asynchrone est exécuté AO Rechercher dans l'objet ,En ce momentAODans l'objetiPour5
Copier le Code

La solution

for(var i =0; i<5; i++) {
(funtion(i){
setTimeout(function(){
console.log(i);
},1000)
}
)(i);
}
// Utiliser des fermetures ,L'exécution immédiate d'une fonction produit un contexte d'exécution au moment de l'exécution, Pour mettre ce cycle i Garde ça. ,
// La fonction Timer à l'intérieur de la chaîne scope va chercheri, Trouvé dans la fonction d'exécution immédiate externe ,Résultats obtenus
Copier le Code

Autres modalités

  • Utiliserlet
  • EntréesetTimeoutLe troisième paramètre de
  • ......

thisProblème de pointage

juejin.cn/post/694602… Résumé succinct

  1. Fonction fléchéethis Décider au moment de la définition ,Impossible de modifier, Et ne peut pas être utilisé comme constructeur
  2. UtilisernewQuand, Dans le constructeur this Pointent vers le nouvel objet créé par ce constructeur
  3. AdoptionbindEtapply,callPour changerthisPointage,Parmi euxbindDansthis Ne sera pas modifié ( Seulement pour la première fois ),call Transmission unique ,applyTableau de passage
  4. Qui appelle dans l'objet thisÀ qui?
  5. Appel directthisPoint Global

Problèmes d'écriture courants

Écrivez - le séparément par la suite. mp.weixin.qq.com/s/sDZudDS2j…

Mécanisme de collecte des ordures

v8Mécanisme de recyclage Cénozoïque et paléozoïque juejin.cn/post/684490… rustMécanisme de recyclage Système de propriété kaisery.github.io/trpl-zh-cn/… c Mécanisme de récupération manuel

Type de données et précision du nombre de points flottants

Type de données de base:number string boolean null undefined object Symbol BigInt Comment déterminer le type de données : juejin.cn/post/691980…

Cycle des événements

Maîtrisenode Et deux boucles d'événements différentes dans l'environnement du Navigateur

zhuanlan.zhihu.com/p/33058983

Peignez simplementnode Comment les événements circulent

版权声明
本文为[Tankeke]所创,转载请带上原文链接,感谢
https://qdmana.com/2021/09/20210914174203420i.html

  1. Vue bidirectional binding (V-model bidirectional binding,. Sync bidirectional binding,. Sync transfer object)
  2. Vue3.0 using Gaode map to obtain longitude and latitude information
  3. React realizes the function of copying pictures with one click
  4. White space, word break and word wrap are the three most basic and confusing attributes in CSS - thoroughly understand
  5. Trois ans d'expérience d'entrevue avec une femme de programmation diplômée, une réflexion sur la cohérence de l'expiration des données de redis Master slave Node,
  6. Résumé de l'entrevue Android de Dachang, carte technique Android
  7. Un plan de carrière Java correct, découvrez les questions que vous devez poser lors de l'entrevue d'embauche du printemps Java de cette année.
  8. Le résumé de l'entrevue Android de Dachang est en retard
  9. Un article vous a appris à gérer les entrevues sur le Web, à partager 350 vraies questions d'entrevue Java,
  10. Jquery Tools Methodology collation, Sharing a little interview Experience
  11. Jquery plug - in urianchor, app front end Development
  12. $in jquery, Visualized Web Development Tool
  13. Le développement Java doit être fait. Les entrevues https demandent souvent une analyse complète.
  14. vue v-if未生效问题
  15. vue动态改变组件外部元素样式
  16. Jdk's Past Life: The Classic Features of Thin Number - java5 - - - 15 -, webfront Development
  17. Résumé des questions d'entrevue pour les ingénieurs en développement Java, analyse des questions d'entrevue à haute fréquence Dubbo,
  18. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  19. A Simple Css Meun
  20. Vue modifier dynamiquement le style de l'élément externe du composant
  21. Vue V - si problème non valable
  22. N'osez pas vous opposer à l'intervieweur et obtenir des commentaires personnels des stagiaires d'offer Ali après cinq rondes d'entrevue.
  23. Améliorer continuellement leur capacité à créer des primes, et les questions d'entrevue Java d'Alibaba Huawei Tencent et d'autres grandes usines sont sautées en octets.
  24. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  25. Who doesn't want to make a scratch music by himself? Scratch music is realized by native JS
  26. Learn XPath to help climb the data of major e-commerce platforms in the Mid Autumn Festival
  27. vue動態改變組件外部元素樣式
  28. vue v-if未生效問題
  29. Je ne comprends pas comment la machine virtuelle JVM peut encore interviewer, et j'ai terminé ce dictionnaire d'entrevue Java de 1307 pages.
  30. Dongxh, mid autumn festival gifts 🥮, [CSS starry sky realization, Mid Autumn Festival poem]
  31. What if you want to see the moon and don't want to go out
  32. Mid Autumn Festival, Chang'e looks at the moon
  33. Mid Autumn Festival special! Use the simplest animation animation to make the most local and trendy holiday blessing greeting card. This romantic male and female tears of Xiao Chen.
  34. [Pixi] super beautiful! How to make mid autumn festival scene level animation!!
  35. Echarts realizes the rotation of the moon (super simple, you can see it at a glance)
  36. Dart mixin full resolution
  37. Some suggestions on Vue code readability | comments are rewarded
  38. 120 lines of code to achieve pure web video editing
  39. Yang yangsun took a selfie to celebrate his 30th birthday, and Wang Yanlin sent blessings.
  40. Comment passer une entrevue avec une entreprise Internet de première ligne, Android Classic Getting started tutoriel
  41. Comment essayer un développeur Android vraiment niveau, 【 résumé de l'entrevue 】
  42. Wang Ou went back to the hotel with the man at night. It was suspected that his relationship was open. The netizen replied mercilessly: is the man single
  43. 借助HTML ping属性实现数据上报
  44. APNG在线制作、兼容、播放和暂停
  45. Apng production, compatibilité, lecture et pause en ligne
  46. Mise en œuvre de l'escalade des données avec l'attribut de Ping HTML
  47. Comment envoyer 100 000 requêtes http le plus rapidement possible
  48. JQuery Basics
  49. Front and back end data interaction (V) -- what is Axios?
  50. Serverless is a model architecture invented driven by economic benefits- Grady
  51. Les questions d'entrevue pour les ingénieurs Java d'Internet, les intervieweurs rencontrés sont tous de niveau architecte,
  52. Cinq ans d'entrevue d'expérience en développement Java, découvrez les questions que vous devez poser lors de l'entrevue d'embauche du printemps Java de cette année.
  53. La dernière collection de questions d'entrevue Java haute fréquence organisée cette année, 2021 Java Universal Popular Framework
  54. Intel selected Weilai es8 to promote driverless taxis in Europe
  55. JavaScript operator (1), Web Development Engineer
  56. Trier les questions d'entrevue Javascript, trier les points de connaissance des itinéraires d'apprentissage
  57. Song Mengjun's "sleepless night" triggered an upsurge of dance storm after 00
  58. Module management of "free and open source" front-end spa project crudapi background management system based on Vue and Quasar (14)
  59. Encapsulated PHP sends HTTP requests with curl. Get and post are very easy to use
  60. Front and back end data interaction (V) -- what is Axios?