Heim >Web-Frontend >js-Tutorial >Was ist der Kontext einer JavaScript-Funktion?

Was ist der Kontext einer JavaScript-Funktion?

伊谢尔伦
伊谢尔伦Original
2017-07-25 11:31:222481Durchsuche

Funktionskontext

In Sprachen wie Java oder C/C++ können Methoden (Funktionen) nur an Objekte gebunden existieren und sind nicht unabhängig. In JavaScript ist eine Funktion auch ein Objekt und kein Teil eines anderen Objekts. Dies ist besonders wichtig, um funktionales JavaScript zu verstehen. Funktionen gelten als erstklassig.

Der Kontext einer Funktion kann sich auch innerhalb der Funktion ändern. Die Funktion kann gleichzeitig als Methode eines Objekts verwendet werden. Die Funktion selbst ist unabhängig. Der Kontext der Funktion kann über die Funktion „Aufruf“ oder „Anwenden“ auf dem Funktionsobjekt geändert werden:

Aufrufen und Anwenden
Aufrufen und Anwenden werden normalerweise zum Ändern des Kontexts der Funktion verwendet , der this-Zeiger in der Funktion wird durch den ersten Parameter von call oder apply ersetzt. Schauen wir uns die Beispiele in Objects und JSON für Erste Schritte mit JavaScript an:

//定义一个人,名字为jack 
var jack = { 
name : "jack", 
age : 26 
} 
//定义另一个人,名字为abruzzi 
var abruzzi = { 
name : "abruzzi", 
age : 26 
} 

//定义一个全局的函数对象 
function printName(){ 
return this.name; 
} 

//设置printName的上下文为jack, 此时的this为jack 
print(printName.call(jack)); 
//设置printName的上下文为abruzzi,此时的this为abruzzi 
print(printName.call(abruzzi)); 

print(printName.apply(jack)); 
print(printName.apply(abruzzi)); 
只有一个参数的时候call和apply的使用方式是一样的,如果有多个参数: 

setName.apply(jack, ["Jack Sept."]); 
print(printName.apply(jack)); 

setName.call(abruzzi, "John Abruzzi"); 
print(printName.call(abruzzi));

Das Ergebnis ist:

Jack Sept. 
John Abruzzi 
apply的第二个参数为一个函数需要的参数组成的一个数组,而call则需要跟若干个参数,参数之间以逗号(,)隔开即可。

Das obige ist der detaillierte Inhalt vonWas ist der Kontext einer JavaScript-Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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