Maison > interface Web > js tutoriel > Comment JavaScript modifie-t-il ce pointeur ? Brève analyse de trois méthodes

Comment JavaScript modifie-t-il ce pointeur ? Brève analyse de trois méthodes

青灯夜游
Libérer: 2022-09-19 09:57:53
avant
2990 Les gens l'ont consulté

JavaScriptComment changer ce pointeur ? L'article suivant vous présentera trois façons de modifier ce point dans JS. J'espère que cela vous sera utile !

Comment JavaScript modifie-t-il ce pointeur ? Brève analyse de trois méthodes

1. Cela pointe vers

Cliquez pour ouvrir la vidéo pour une explication plus détaillée

this随处可见,一般谁调用,this就指向谁。this在不同环境下,不同作用下,表现的也不同。
Copier après la connexion

Dans les situations suivantes, cela pointe vers window

1. Sous effet global, cela pointe vers la fenêtre

console.log(window);
console.log(this);
console.log(window == this); // true
Copier après la connexion

2 Lorsque la fonction est appelée indépendamment, ceci à l'intérieur de la fonction pointe également vers la fenêtre

function fun() {
   console.log('我是函数体');
   console.log(this);  // Window 
}
fun();
Copier après la connexion

3 Lorsque la fonction imbriquée est appelée indépendamment, cela pointe vers la fenêtre par défaut

function fun1() {
    function fun2() {
        console.log('我是嵌套函数');
        console.log(this);  // Window
    }
    fun2();
}
fun1();
Copier après la connexion
.

4. Exécution auto-ajustable Le this interne dans la fonction (exécution immédiate) pointe également vers la fenêtre

(function() {
    console.log('立即执行');
    console.log(this);   // Window
})()
Copier après la connexion

Ce qui nécessite une attention particulière est :

  • this dans le constructeur est utilisé pour définir les membres (propriétés et méthodes) pour la classe
  • Non disponible dans les fonctions fléchées. Cela pointe vers, s'il y en a un dans la fonction flèche, il le recherchera dans la fonction supérieure jusqu'à la fenêtre

2. Changez ce point en

1. Méthode call()

call() 方法的第一个参数必须是指定的对象,然后方法的原参数,挨个放在后面。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数往后顺延一位
Copier après la connexion

utilisation : Nom de la fonction.call()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串call
    console.log(a + b);
}
//使用call() 方法改变this指向,此时第一个参数是 字符串call,那么就会指向字符串call
fun.call('call', 2, 3)  // 后面的参数就是原来函数自带的实参
Copier après la connexion

2. Méthode apply()

apply() 方法的第一个参数是指定的对象,方法的原参数,统一放在第二个数组参数中。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数放在一个数组中
Copier après la connexion

Utilisation : Nom de la fonction.apply()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串apply
    console.log(a + b);
}
//使用apply() 方法改变this指向,此时第一个参数是 字符串apply,那么就会指向字符串apply
fun.apply('apply', [2, 3])  // 原函数的参数要以数组的形式呈现
Copier après la connexion

3. Méthode bind()

bind() 方法的用法和call()一样,直接运行方法,需要注意的是:bind返回新的方法,需要重新
调用
是需要自己手动调用的
Copier après la connexion

Utilisation : Nom de la fonction.bind()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串bind
    console.log(a + b);
}
//使用bind() 方法改变this指向,此时第一个参数是 字符串bind,那么就会指向字符串bind
let c = fun.bind('bind', 2, 3);
c(); // 返回新的方法,需要重新调用
// 也可以使用下面两种方法进行调用
// fun.bind('bind', 2, 3)();
// fun.bind('bind')(2, 3);
Copier après la connexion

【Recommandations associées : Tutoriel vidéo javascript, Vidéo de programmation de base

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!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal