Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in mehrere Funktionsaufrufmethoden, auf die hier in JS verwiesen wird

不言
Freigeben: 2018-11-12 16:20:44
nach vorne
2353 Leute haben es durchsucht

Der Inhalt dieses Artikels ist eine Einführung in mehrere Funktionsaufrufmethoden, auf die in JS hingewiesen wird. Ich hoffe, dass er für Freunde hilfreich ist.

JavaScript-Anfänger werden über diesen Zeiger immer verwirrt sein. Wenn Sie JavaScript gründlich erlernen möchten, müssen Sie zunächst einige diesbezügliche Konzepte klären. In JavaScript zeigt dies immer auf ein Objekt, aber das spezifische Objekt, auf das es zeigt, wird zur Laufzeit entsprechend der Funktionsausführungsumgebung dynamisch gebunden, nicht der Umgebung, wenn die Funktion deklariert wird. Mit Ausnahme der ungewöhnlichen Situationen „with“ und „eval“ kann dieser Zeiger in praktischen Anwendungen grob in die folgenden vier Typen unterteilt werden.

Wird als Methode eines Objekts aufgerufen

Wenn eine Funktion als Methode eines Objekts aufgerufen wird, zeigt dies auf das Objekt:

var person = {
  name: 'twy',
  getName: function() {
    console.info(this === person);  // 输出true
    console.info(this.name);     // 输出twy
  }
}
person.getName();
Nach dem Login kopieren

Wird als normale Funktion aufgerufen

Wenn die Funktion als gewöhnliche Funktion aufgerufen wird, zeigt dies auf das globale Objekt im nicht-strikten Modus:

function getName(){
  // 非严格模式
  console.info(this === window); // 浏览器环境下输出true
}
getName();
Nach dem Login kopieren

Im strikten Modus ist dies undefiniert:

function getName(){
  // 严格模式
  "use strict"
  console.info(this === window); // 输出false
}
getName();
Nach dem Login kopieren

The Konstruktor ruft

auf, wenn neu. Wenn ein Objekt ein Objekt ist, zeigt dies im Konstruktor auf das neue Objekt:

function person(){
  // 构造函数
  this.color = 'white';
}
var boy = new person();
console.info(boy.color);  // 输出white
Nach dem Login kopieren

aufrufen oder anwenden

Verwenden Sie Function.prototype.apply oder Function.prototype.call um diesen Punkt der eingehenden Funktion dynamisch zu ändern:

// 声明一个父亲对象,getName方法返回父亲的名字
var father = {
  name: 'twy',
  getName: function(){
    return this.name;
  }
}
// 生命一个儿子对象,但是没有返回名字的功能
var child = {
  name: 'chy'
}
console.info(father.getName()); // 输出twy

// 使用call或apply将father.getName函数里this指向child
console.info(father.getName.call(child)); // 输出chy
console.info(father.getName.apply(child)); // 输出chy
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in mehrere Funktionsaufrufmethoden, auf die hier in JS verwiesen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage