Espérons que le titre est explicite, quel est l'avantage d'utiliser la méthode .call() en Javascript par rapport à écrire simplement functionName(); ?différence entre functionName() et functionName.call() en javascript
2
A
Répondre
8
functionName.call()
prend une instance d'objet comme premier paramètre. Il fonctionne alors functionName
dans le cadre de cette instance d'objet (par exemple "ce" est l'instance spécifiée)
+0
Merci, cela a du sens. – jonhobbs
5
Si vous ne transmettez rien dans call()
, ce sera pareil; la fonction sera exécutée avec la même portée que l'appel à call()
est fait:
function test() {
alert(this);
}
test(); // alerts the window object
test.call(); // alerts the window object
Mais si vous passez un objet dans call()
, cet objet sera utilisé comme la portée:
test.call("hi"); // alerts "hi"
1
Permettez-moi un exemple:
<html>
<head>
<script type="text/javascript">
var developerName = "window";
function test(){
var developer = function(developerName){ this.developerName = developerName;}
developer.prototype = {
displayName : function(){alert(this.developerName);}
}
var developerA = new developer("developerA");
var developerB = new developer("developerB");
developerA.displayName();//will display an alert box with "developerA" as its inner text
developerA.displayName.call();//will display an alert box with "window" as its inner text, in this case the context is the window object.
developerA.displayName.call(developerB);//will display an alert box with "developerB" as its inner text
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="display names"/>
<body>
</html>
Pour en savoir plus:
http://www.alistapart.com/articles/getoutbindingsituations
Espoir CA aide.
Questions connexes
- 1. Javascript Différence entre fuseau horaire et GMT
- 2. Quelle est la différence entre « et" en JavaScript?
- 3. Différence entre sqlreader et
- 4. Différence entre -Wconversion entre gcc et g ++
- 5. Comment obtenir la différence entre deux dates en JavaScript?
- 6. Différence entre JNLP et JavaFX
- 7. Différence entre les objets JSON en utilisant Javascript/JQuery
- 8. Différence entre control.Attributes.Add et control.Attributes []
- 9. Différence entre BOOST_CHECK_CLOSE et BOOST_CHECK_CLOSE_FRACTION?
- 10. Différence entre DECLARE_DYNAMIC et DECLARE_DYNCREATE?
- 11. Différence entre Session et HttpContext.Current.Session
- 12. Différence entre HTTPContextBase.User et MembershipUser
- 13. Différence entre FileStreamResult et FilePathResult?
- 14. Différence entre Delegate.Invoke et délégué()
- 15. Différence entre scanf() et fgets()
- 16. Différence entre DataGrid et GridView
- 17. Différence entre "__method__" et "méthode"
- 18. Différence entre "\ n" et Environment.NewLine
- 19. Différence entre admin.site.root et admin.site.urls
- 20. Différence entre Roles.GetRolesForUser et Roles.Provider.GetRolesForUser?
- 21. Différence entre val() et text()
- 22. Différence entre value et itemvalue
- 23. Différence entre Send.nc et SendMsg.nc
- 24. Différence entre System.Web.Cache et HTTPContext.Curent.Cache
- 25. Différence entre feature et plugin.xml?
- 26. Différence entre un objet et un hachage?
- 27. Que signifie "FunctionName (bool() args)" en C#?
- 28. différence entre les propriétés de la classe et la fonction prototype en Javascript
- 29. Différence entre QuickGraph de CodePlex et CodeProject
- 30. Différence entre un tableau d'octets et MemoryStream
Il existe également functionName.apply(). Voir 15.5.4.3 et 15.5.4.4 dans http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf – some