Maison  >  Article  >  interface Web  >  Quel est le contexte d'une fonction JavaScript ?

Quel est le contexte d'une fonction JavaScript ?

伊谢尔伦
伊谢尔伦original
2017-07-25 11:31:222460parcourir

Contexte de la fonction

Dans des langages comme Java ou C/C++, les méthodes (fonctions) ne peuvent exister qu'attachées à des objets et ne sont pas indépendantes. En JavaScript, une fonction est également un objet et ne fait partie d'aucun autre objet. Il est particulièrement important de comprendre cela, notamment pour comprendre le JavaScript fonctionnel. Dans les langages de programmation fonctionnels, les fonctions sont considérées comme de première classe.

Le contexte d'une fonction peut changer. Par conséquent, cela au sein de la fonction peut également changer. La fonction peut être utilisée comme méthode d'un objet ou comme méthode d'un autre objet en même temps. la fonction elle-même est indépendante. Le contexte de la fonction peut être modifié via la fonction call ou apply sur l'objet Function :

call et apply
call et apply sont généralement utilisés pour modifier le contexte de la fonction , le pointeur this dans la fonction sera remplacé par le premier paramètre de call ou apply Jetons un coup d'œil aux exemples dans Objets et JSON pour démarrer avec JavaScript :

//定义一个人,名字为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));

Le résultat. est :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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