J'ai souvent besoin de passer des méthodes d'objets à d'autres objets. Cependant, je veux généralement que la méthode soit attachée à l'objet d'origine (par attaché, je veux dire 'ceci' devrait se référer à l'objet original). Je sais que quelques façons de le faire:Comment puis-je transmettre des méthodes en javascript?
a) Dans le constructeur de l'objet: ObjectA = function() { var that = this; var method = function(a,b,c) { that.abc = a+b+c }}
b) Dans objectA qui a été passé objectB: objectB.assign(function(a,b,c) { that.method(a,b,c) })
c) En dehors des deux objets: objectB.assign(function(a,b,c) { objectA.method(a,b,c) })
Je veux savoir s'il existe un moyen plus simple de transmettre des méthodes attachées à leurs objets d'origine.
Merci, c'est parfait! Bien que je ne le comprenne pas encore. – peterjwest
J'ai modifié un peu, alors peut-être que c'est plus clair maintenant. Sinon, vous pouvez demander ... – ob1
Il peut également être intéressant de regarder la source actuelle (1.7 RC 2) de 'Function # bind' de Prototype, qui sert le même but que' createDelegate' de ob1 mais qui a traversé ronde de tests de performance et d'optimisation il ya quelques mois: http://github.com/sstephenson/prototype/blob/master/src/lang/function.js#LC108 Séparément: j'utiliser 'scope || undefined' plutôt que 'scope || window', pour éviter la spécificité inutile du navigateur et les problèmes avec 'window' étant écrasés. Appelle 'apply' en utilisant' undefined' car la portée utilisera l'objet global. –