2012-01-22 3 views
2

J'ai récemment rencontré l'option foo.toSource() en JavaScript. Cela permet une sérialisation d'une fonction. Je m'interrogeais sur les possibilités de transférer des fonctions sur les réseaux, du serveur au client, et de les exécuter ultérieurement - avec eval().Transmission d'une fonction du serveur au client

Pensez-vous que c'est réellement utile?
Y a-t-il des cadres utilisant un tel paradigme?

+1

1) 'toSource()' est IE seulement, voir les réponses à [cette question] (http://stackoverflow.com/questions/171407/implementing-mozillas-tosource-method-in-internet-explorer) pour implémentations dans d'autres navigateurs. 2) Quel est le lien entre 'toSource' et les questions que vous posez? –

+1

Je vous suggère de ne pas utiliser eval(); c'est lent et si le code est généré par l'utilisateur, vous risquez XSS. –

+0

Merci. Ma question est plus théorique .. Je ne voulais pas suggérer le vrai pourquoi de le faire (le toSource est juste un moyen possible de sérialiser une fonction à transférer sur le réseau). – Ofri

Répondre

0

Le passage de fonctions du serveur à une page peut se faire sans toSource, en le plaçant simplement dans le code lorsque la page est générée sur le serveur, ou en le demandant via AJAX si nécessaire.

+0

Merci! oui, j'ai réfléchi à ce que vous dites, et cela m'amène à ma prochaine question/merveille: est-il possible de transférer une fonction avec sa fermeture? Pensez-vous que ce genre de fonctionnalité sera utile? – Ofri

0

Les seuls cas d'utilisation que je vois sont:

  1. chaque fois que vous envoyez .js
  2. JSNOP

La chose que vous pensé à n'est pas posible. Nous ne pouvons donc envoyer que la représentation textuelle de la fonction, pas son contexte ou ses fermetures et tout ça.

+0

Ok merci! C'était utile. Je suppose que je n'ai pas réfléchi à ça. – Ofri

Questions connexes