je peux appeler une fonction directement (je vais utiliser alert
comme exemple) comme sifonction Javascript dans un objet/hachage
alert("Hello World!"); // pops up an alert window
Cependant, quand je mets une fonction dans un objet, en l'appelant ne fonctionne:
d = {func: alert};
d.func("Hello World!"); // doesn't do anything
d["func"]("Hello World!"); // also doesn't do anything
je me suis dit que je devais peut-être passer explicitement dans un argument this
vide, alors j'ai essayé
d.func(null, "Hello World!") // still nothing
mais en vain. Fait intéressant, cela ne fonctionne
d.func.apply(null, ["Hello World!"]); // success!
mais qui est si bavard, il fait à titre gratuit mes dents mal (pour citer JWZ). Y a-t-il une manière plus concise, moins laide?
Ahh, vous semblez avoir raison. L'inspection de l'alerte m'indique qu'elle ne possède pas toutes les propriétés que possèdent les objets Javascript habituels, puisqu'elle est "intégrée" comme vous le dites. Merci d'avoir testé dans Chrome et d'avoir expliqué le comportement. –
J'ai en fait un amendement à faire - cela ne fonctionne pas dans Chrome ... tout le temps. Le code, exactement comme vous l'avez écrit, provoque et erreur d'invocation illégale. Toutefois, si vous faites simplement référence à l'alerte dans l'espace de noms global, c'est-à-dire: var myAlert = alert; myAlert ("Bonjour, monde!"); // Travaux! Cela ressemble à un comportement de navigateur finicky pour moi. –