Maison > interface Web > js tutoriel > Questions connexes à ce sujet

Questions connexes à ce sujet

jacklove
Libérer: 2018-05-21 13:35:29
original
1172 Les gens l'ont consulté

Je rencontre souvent ce problème dans mes études. Cet article expliquera les problèmes liés.

Plusieurs cas de ceci en tant que fenêtre d'objet globale

Ceci en tant qu'appel de fonction

Ceci en tant que fonction imbriquée interne

dans setTimeout, setInteval c'est toujours une fenêtre de variable globale

Plusieurs cas où il s'agit d'une variable non globale

Constructeur (le constructeur doit générer un nouvel objet via une fonction, à ce moment cela fait référence à ce nouvel objet )

est appelé comme méthode objet, telle que :

var obj1 = {    name: 'Byron',    fn : function(){        console.log(this);
    }
};
obj1.fn(); // obj1var fn2 = obj1.fn;
fn2();  //此时this仍然指的是全局对象window
Copier après la connexion

Événement de liaison d'objet DOM qui représente l'objet DOM source (il y a des bogues dans les versions inférieures d'IE et pointe également vers la fenêtre )

Utilisez la fonction bind pour lier la fonction d'origine. À ce stade, cela fait référence au premier paramètre passé dans bind. Par exemple :

var obj1 = {    name: 'Byron',    fn : function(){        console.log(this);
    }
};
obj1.fn(); //obj1var fn2 = obj1.fn;
Copier après la connexion
fn2();  //此时this仍然指的是全局对象windowvar fn3 = obj1.fn.bind(obj1);fn3();  //此时this指的为obj1(此方法比较灵活,可利用此方法将所要传送给this 的参数指定为bind的第一个对象)
apply和call设置this,如:
fn.call(context,num1,num2...);fn.apply(context,numArray)
Copier après la connexion

Le premier paramètre est cet objet. La différence est que call accepte une liste de paramètres et apply accepte un tableau de paramètres.

appelant, si une fonction f est appelée dans la portée globale, f.caller est null Au contraire, si une fonction est appelée dans une autre portée de fonction, f.caller pointe vers l'appelant. Sa fonction peut être. simplement compris comme l'appelant fait référence à sa fonction parent. Par exemple :

function fn(){    console.log(fn.caller); 
    function fn2(){        console.log(fn2.caller)
    }
    fn2()
}
Copier après la connexion
fn();
callee,当函数被调用的时候arguments.callee(匿名函数的时候很好用,可以调用自身)
var i = 1;window.onclick = function(){    console.log(1);    if(i<5){        i++;        setTimeout(arguments.callee,200);    }}
Copier après la connexion

Cet article explique les problèmes liés à cela. Pour plus de contenu connexe, veuillez faire attention au site Web chinois php.

Recommandations associées :

Tableaux, chaînes et fonctions mathématiques JS

À propos des objets temporels JS et des problèmes de récursion

Quelques bases du style CSS

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:php.cn
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