Affectation de la fonction dans l'objet fonction sans invoquer la fonction elle-même

J'essaie d'assigner une fonction dans une propriété d'objet de fonction sans invoquer réellement la fonction elle-même.

par exemple,

J'ai la définition de classe d'objet de fonction suivante

function objectOne(name, value, id){ this.name=name; this.value=value; this.id=id; this.methodOne=methodFunction(this); } 

La dernière ligne this.methodOne=methodFunction(this); Je souhaite passer l'objet actuel à la fonction, mais en même temps je ne veux pas exécuter la fonction dès maintenant.

Mais si je le fais de cette façon sans le support this.methodOne = methodFunction, l'argument de cet objet ne serait pas transmis en tant que paramètre à la fonction.

Existe-t-il un moyen de travailler à travers cela.

Merci d'avance

Cette page m'a aidé à m'expliquer le mieux ce concept. Essentiellement, ce serait faire comme les suivants.

 function objectOne(name, value, id) { function methodFunction(value) { // do something } var that = this; this.methodOne = function() { methodFunction(that); }; } var x = new objectOne("one", 2, 3); x.methodOne(); 

Vous pourriez le faire de cette façon

 function objectOne(name, value, id){ this.name=name; this.value=value; this.id=id; this.methodOne=function() { methodFunction(this); }; } 

Ce genre de chose est pour quoi le curry est destiné. Utilisez Curry () de votre bibliothèque JS préférée, ou créez vous-même:

 function curry (func, what_this) { var what_this = what_this || window; var args = []; for (var i=2, len = arguments.length; i < len; ++i) { args.push(arguments[i]); }; return function() { func.apply(what_this, args); }; } 

Ensuite, la dernière ligne de votre constructeur ressemble à ceci:

 this.methodOne=curry(methodFunction, undefined, this);