comment obtenir de Fonction en cours de référence de l'objet
itself.bind = function (object, method, callback, context, args, includeEventArgs) {
var handler, originalArgLen;
args = args.slice(0, arguments.length);
originalArgLen = args.length;
context = context || null;
handler = function () {
if (includeEventArgs) {
for (var i = arguments.length - 1; i >= 0; i--) {
args.push(arguments[i]);
}
}
callback.apply(context, args);
};
handler.userArgsLength = originalArgLength;
object[method] = handler;
};
Supposons que j'appelle
TOOL.bind(canvas, "onmouseover", doDrawFunc, [currentDrawingTool], true);
Je veux être en mesure d'accéder à userArgsLength
à partir de l'intérieur de la doDrawFunc
.
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour
arguments.callee.caller.userArgsLength
.arguments.le destinataire de l'appel
est une référence àdoDrawFunc
..l'appelant
est la fonction qui a appelé (handler
)..userArgsLength
est la propriété de la fonction de l'objet.Edit: je ne crois pas qu'il existe un moyen d'éviter
arguments.callee
sans changer votre fonction principale. Vous devriez probablement passer quel que soit le rappel des besoins d'accès comme argument à cette fonction de rappel, de toute façon. Vous pouvez même passer danshandler
comme un argument.Déplacer la mission de gestionnaire.userArgsLength à un point antérieur, pousser sur l'appliquer tableau de la pile, et bam, vous pouvez supposer qu'il est le dernier argument.
Ne savez pas pourquoi vous auriez envie de l'utiliser d'arguments.le destinataire de l'appel, de toute façon; ce que je comprends, la traversée vers l'arrière comme ça peut être vraiment lent si vous ne faites pas attention.