Heim  >  Artikel  >  Web-Frontend  >  Anwendungsszenarien von call gelten in javascript_javascript skills

Anwendungsszenarien von call gelten in javascript_javascript skills

WBOY
WBOYOriginal
2016-05-16 16:03:431085Durchsuche

In einigen jQuery-Plugins sehen wir oft so etwas wie callback.call(xxx,xxx). Obwohl ich im Buch gelesen habe, dass die Funktionen call und apply den Umfang ändern können, kann ich den Hauptzweck immer noch nicht vollständig verstehen Welche Probleme werden gelöst, gibt es Alternativen oder welche Probleme sollen diese beiden Funktionen hauptsächlich lösen, und wann ist der beste Zeitpunkt, sie zu verwenden? Mir wird schwindelig und ich springe aus dem linearen Lesen heraus. Es fühlt sich etwas verworren an

Die Funktion von „Aufrufen“ und „Anwenden“ ist sehr einfach, nämlich den Kontext zu ändern. Es gibt zu viele anwendbare Szenarien. Obwohl es manchmal nur der „Schönheit“ dient, verwende ich häufig die folgenden.

1.

Code kopieren Der Code lautet wie folgt:
Object.prototype.toString.call(Obj)

Wird verwendet, um den Typ von Obj zu bestimmen

Obwohl Argumente denen von Array ähneln, verfügen sie nicht über die Push-Methode von Array. Was soll ich tun?
Array.prototype.push.call(arguments)

3. Javascript verfügt nicht über das Konzept privater Methoden, daher möchte ich Schließungen verwenden, um es zu implementieren

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

  var _privateFunction = function () {

  }

  window.Person = Person;

}).call(window);

Das ist so ziemlich das, was es bedeutet. Wenn Sie möchten, dass der Kontext in Ihrem Rückruf der aktuelle Kontext ist, können Sie auch „Anrufen“ oder „Anwenden“ verwenden.

Zu diesem Zeitpunkt bezieht sich dies in Ihrem Rückruf auf den aktuellen Kontext. Beispielsweise verfügt eine Klasse Person und ihre Methode say über einen Rückrufparameter. Wenn dieser Rückruf über normale Klammern ausgeführt wird, müssen andere in diesem Rückruf ausgeführte Methoden mit person.other implementiert werden, der Kontext wird jedoch gewechselt Damit ist alles erledigt. other~ Der Codevergleich ist wie folgt:

var Person = function(){

};

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

Person.prototype.other = function(){

};

var vincent = new Person();

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

Verwendeter Anruf:

var Person = function(){

};

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

Person.prototype.other = function(){

};

var vincent = new Person();

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

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn