Heim  >  Artikel  >  Web-Frontend  >  Einführung in mehrere Funktionsaufrufmethoden, auf die hier in JS verwiesen wird

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

不言
不言nach vorne
2018-11-12 16:20:442330Durchsuche

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

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

Im strikten Modus ist dies undefiniert:

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

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen