Maison  >  Article  >  interface Web  >  Questions connexes à ce sujet

Questions connexes à ce sujet

jacklove
jackloveoriginal
2018-05-21 13:35:291151parcourir

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

É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;
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)

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()
}
fn();
callee,当函数被调用的时候arguments.callee(匿名函数的时候很好用,可以调用自身)
var i = 1;window.onclick = function(){    console.log(1);    if(i<5){        i++;        setTimeout(arguments.callee,200);    }}

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!

Déclaration:
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