Maison  >  Article  >  interface Web  >  Scénarios d'application d'appel à appliquer dans les compétences javascript_javascript

Scénarios d'application d'appel à appliquer dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:03:431061parcourir

Nous voyons souvent quelque chose comme callback.call(xxx,xxx) dans certains plug-ins jQuery Bien que j'ai lu dans le livre que les fonctions call et apply peuvent changer la portée, je n'arrive toujours pas à comprendre complètement l'objectif principal. de changer la portée. Quels problèmes sont résolus, existe-t-il des alternatives, ou quels problèmes ces deux fonctions sont-elles principalement destinées à résoudre, des scénarios d'application, et quel est le moment le plus approprié pour les utiliser ? avoir le vertige et sortir de la lecture linéaire. Cela semble un peu alambiqué

.

La fonction d'appel et d'application est très simple, c'est-à-dire changer le contexte. Il y a trop de scénarios applicables Bien que parfois c'est juste pour la « beauté », les suivants sont ceux que j'utilise couramment.

1.

Copier le code Le code est le suivant :
Object.prototype.toString.call(Obj)

Utilisé pour déterminer le type d'Obj

Bien que les arguments soient similaires à Array, ils n'ont pas la méthode push d'Array. Que dois-je faire ?
Array.prototype.push.call(arguments)

3.Javascript n'a pas le concept de méthodes privées, je souhaite donc utiliser des fermetures pour l'implémenter

(function () {
  var Person = function () {
    this.doSomeThing = function () {
      _privateFunction.call(this);
    }
  }

  var _privateFunction = function () {

  }

  window.Person = Person;

}).call(window);

C'est à peu près ce que cela signifie. Lorsque vous rappelez, lorsque vous souhaitez que le contexte de votre rappel soit le contexte actuel, vous pouvez également utiliser call ou postuler.

À l'heure actuelle, ceci dans votre rappel fait référence au contexte actuel. Par exemple, une classe Person et sa méthode say ont un paramètre de rappel. Si ce rappel est exécuté entre crochets ordinaires, alors les autres méthodes de personne exécutées dans ce rappel doivent être implémentées en utilisant person.other, mais le contexte est changé après. ça, tout est fait avec this.other~ La comparaison des codes est la suivante :

var Person = function(){

};

Person.prototype.say = function(callback){
  callback();
};

Person.prototype.other = function(){

};

var vincent = new Person();

vincent.say(function(){
  vincent.other();
});

Appel utilisé :

var Person = function(){

};

Person.prototype.say = function(callback){
  callback.call(this);
};

Person.prototype.other = function(){

};

var vincent = new Person();

vincent.say(function(){
  this.other();
});

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

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