Je veux définir deux propriétés égales les unes aux autres dans un seul objet. Voici un exemple:
var obj = {
a: function() { ... },
b: alert,
};
obj.c = obj.a;
4 Réponses :
Vous pouvez d'abord déclarer la fonction et l'utiliser avec A code> & C code>:
Vous pouvez mettre la valeur dans une variable distincte: Cependant, vous ne pouvez rien faire mieux que cela. p> p>
Si vous souhaitez tout faire à l'intérieur de l'initialiseur d'objet, vous pouvez appeler une propriété appeler la fonction de l'autre et relais tous les arguments à l'aide de la propriété Function.Arguments: Toutefois, Votre meilleur pari peut être de créer une variable contenant la fonction anonyme en premier, puis attribuez sa valeur aux deux propriétés de votre initialisateur d'objet: p> Vous pouvez également faire quelque chose comme ça, Mais j'irais avec l'approche ci-dessus: p>
var obj = {
a: function() { alert("hello")},
b: alert,
c: function(){return this.a()}
};
obj.c();
As SLaks mentioned, this won't work if the functions have properties (eg, prototype or arguments.callee).
Cela ne fonctionnera pas si les fonctions ont des propriétés (par exemple, prototype code> ou arguments.callee code>).
Voir Stackoverflow.com/questions/2787245/... , Stackoverflow.com/questions/4618541/... , et Stackoverflow.com/questions/4616202/...