Qu'est-ce que cela signifie en javascript
La signification chinoise de ceci est "actuel ; ceci". Il s'agit d'une variable de pointeur en JavaScript, qui pointe vers l'environnement d'exécution de la fonction actuelle. Lorsque la même fonction est appelée dans différents scénarios, le pointeur de this changera, mais il pointera toujours vers le véritable appelant de la fonction dans laquelle elle se trouve, s'il n'y a pas d'appelant, cela pointera vers la fenêtre ;
L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.
La portée des fonctions JavaScript est statique, mais l'appel de fonction est dynamique. Étant donné que les fonctions peuvent être exécutées dans différents environnements d'exécution, JavaScript définit le mot-clé this dans le corps de la fonction pour obtenir l'environnement d'exécution actuel.
il s'agit d'une variable pointeur qui pointe vers l'environnement d'exécution de la fonction actuelle.
Lorsque la même fonction est appelée dans différents scénarios, le but de cela peut également changer, mais elle pointera toujours vers le véritable appelant de la fonction dans laquelle elle se trouve (celui qui l'appelle pointe vers qui) ; s'il n'y a pas d'appelant, pointez simplement vers la fenêtre de l'objet global.
Utilisez ceci
Ceci est automatiquement généré par le moteur JavaScript lors de l'exécution d'une fonction. Il s'agit d'un pointeur dynamique qui existe au sein de la fonction et fait référence à l'objet appelant actuel. . L'utilisation spécifique est la suivante :
this[.属性]
Si cela ne contient pas d'attributs, l'objet actuel est transmis.
Ceci est flexible à utiliser et les valeurs qu'il contient sont également variées. Par exemple, l'exemple suivant utilise la méthode call() pour modifier continuellement l'objet auquel il fait référence dans une fonction.
var x = "window"; //定义全局变量x,初始化字符串为“window” function a () { //定义构造函数a this.x = "a"; //定义私有属性x,初始化字符a } function b () { //定义构造函数b this.x = "b"; //定义私有属性x,初始化为字符b } function c () { //定义普通函数,提示变量x的值 console.log(x); } function f () { //定义普通函数,提示this包含的x的值 console.log(this.x); } f(); //返回字符串“window”,this指向window对象 f.call(window); //返回字符串“window”,指向window对象 f.call(new a()); //返回字符a,this指向函数a的实例 f.call(new b()); //返回字符b,this指向函数b的实例 f.call(c); //返回undefined,this指向函数c对象
Ce qui suit est un bref résumé de cette performance dans 5 scénarios courants et stratégies d'adaptation.
1. Appels ordinaires
L'exemple suivant démontre l'impact des références de fonction et des appels de fonction à ce sujet.
var obj = { //父对象 name : "父对象obj", func : function () { return this; } } obj.sub_obj = { //子对象 name : "子对象sub_obj", func : obj.func } var who = obj.sub_obj.func(); console.log(who.name); //返回“子对象sub_obj”,说明this代表sub_obj
Si la fonction du sous-objet sub_obj est modifiée en un appel de fonction.
obj.sub_obj = { name : "子对象sub_obj", func : obj.func() //调用父对象obj的方法func }
Ensuite, ceci dans la fonction représente l'objet parent obj où la fonction est définie.
var who = obj.sub_obj.func; console.log(who.name); //返回“父对象obj”,说明this代表父对象obj
2. Instanciation
Lors de l'appel d'une fonction à l'aide de la nouvelle commande, this fait toujours référence à l'objet instance.
var obj = {}; obj.func = function () { if (this == obj) console.log("this = obj"); else if (this == window) console.log("this = window"); else if (this.contructor == arguments.callee) console.log("this = 实例对象"); } new obj.func; //实例化
3. Appel dynamique
Utilisez call et apply pour forcer cela à pointer vers l'objet paramètre.
function func () { //如果this的构造函数等于当前函数,则表示this为实例对象 if (this.contructor == arguments.callee) console.log("this = 实例对象"); //如果this等于window,则表示this为window对象 else if (this == window) console.log("this = window对象"); //如果this为其他对象,则表示this为其他对象 else console.log("this == 其他对象 \n this.constructor =" + this.constructor); } func(); //this指向window对象 new func(); //this指向实例对象 cunc.call(1); //this指向数值对象
Dans l'exemple ci-dessus, lorsque func() est appelé directement, cela représente l'objet window. Lorsqu'une fonction est appelée à l'aide de la nouvelle commande, un nouvel objet instance sera créé, et celui-ci pointera vers cet objet instance nouvellement créé.
Lorsque vous utilisez la méthode call() pour exécuter la fonction func(), puisque la valeur du paramètre de la méthode call() est le chiffre 1, le moteur JavaScript forcera le chiffre 1 à être encapsulé dans un chiffre numérique. objet, et cela pointera vers cet objet numérique.
4. Traitement des événements
Dans le résumé de la fonction de traitement des événements, cela pointe toujours vers l'objet qui a déclenché l'événement.
<input type="button" value="测试按钮" /> <script> var button = document.getElementsByTagName("put")[0]; var obj = {}; obj.func = function () { if (this == obj) console.log("this = obj"); if (this == window) console.log("this = window"); if (this == button) console.log("this = button"); } button.onclick = obj.func; </script>
Dans le code ci-dessus, ceci contenu dans func() ne pointe plus vers l'objet obj, mais vers le bouton bouton, car func() est appelé après avoir été passé à la fonction de gestion des événements du bouton.
Si vous utilisez le standard de niveau DOM2 pour enregistrer la fonction de gestionnaire d'événements, la procédure est la suivante :
if (window.attachEvent) { //兼容IE模型 button.attachEvent("onclick", obj.func); } else { //兼容DOM标准模型 button.addEventListener("click", obj.func, true); }
Dans le navigateur IE, cela pointe vers l'objet fenêtre et l'objet bouton, mais dans DOM navigateur standard, il pointe uniquement vers l'objet bouton. Parce que, dans le navigateur IE, attachEvent() est une méthode de l'objet window Lorsque cette méthode est appelée, elle pointe vers l'objet window.
Afin de résoudre les problèmes de compatibilité des navigateurs, vous pouvez appeler la méthode call() ou apply() pour forcer l'exécution de la méthode func() sur l'objet obj afin d'éviter le problème de différents navigateurs analysant cela différemment .
if (window.attachEvent) { button.attachEvent("onclick", function () { //用闭包封装call()方法强制执行func() obj.func.call(obj); }); } else { button.attachEventListener("onclick", function () { obj.func.call(obj); }, true); }
Lorsqu'il est à nouveau exécuté, le this contenu dans func() pointe toujours vers l'objet obj.
5. Minuterie
Utilisez une minuterie pour appeler une fonction.
var obj = {}; obj.func = function () { if (this == obj) console.log("this = obj"); else if (this == window) console.log("this = window对象"); else if (this.constructor == arguments.callee) console.log("this = 实例对象"); else console.log("this == 其他对象 \n this.constructor =" + this.constructor); } setTimeOut(obj.func, 100);
Dans IE, cela pointe vers l'objet window et l'objet bouton. La raison spécifique est la même que celle de la méthode attachEvent() expliquée ci-dessus. Dans les navigateurs compatibles DOM, cela pointe vers l'objet window, pas vers l'objet bouton.
Étant donné que la méthode setTimeOut() est exécutée dans la portée globale, elle pointe vers l'objet window. Pour résoudre les problèmes de compatibilité du navigateur, vous pouvez utiliser les méthodes call ou apply.
setTimeOut (function () { obj.func.call(obj); }, 100);
[Recommandations associées : Tutoriel d'apprentissage Javascript]
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service
