2013-06-24 6 views
-1

Je me demande si je peux utiliser des variables que je transmets à une fonction comme arguments en tant que «littéraux» (je ne connais pas de meilleure façon de décrire le problème, peut-être que l'exemple éclaircira les choses) :Variables en tant que 'littéraux'

banana = yellow; 
minion = cute; 

function ex(banana, minion) { 
    banana.minion; 
} 

// What I want is: yellow.cute 

Modifier Je pense que je ne pourrais pas avoir été exactement ce que demande je voulais dire. Je suis désolé pour ça. Voici le code réel qui pourrait clarifier les choses.

function ex(banana, minion){ 
    createjs.Tween.get(banana, {override: true}).to({banana: minion}, -(value + -banana.minion) * speed, createjs.Ease.ease); 
console.log(banana); // returns 'yellow' 
console.log(minion); // returns 'cute' 
console.log(banana.minion); // returns 'undefined' 
console.log(banana[minion]); // returns 'undefined' too 
} 

Je veux passer tout ce que je définirais comme banana ou minion être « littéral », de sorte qu'il va lire createjs.Tween.get(yellow, {override: true}).to({yellow: cute}, -(value + -yellow.cute) * speed, createjs.Ease.ease);

+0

Que fait votre fonction? ça retourne quelque chose? – mohkhan

+0

Cherchez-vous à renvoyer cela comme une variable de chaîne? – Curt

+0

Alors vous voulez juste appeler 'banana (minion)' dans votre fonction 'ex' ...? – CBroe

Répondre

2

Vous pouvez transmettre le nom comme une chaîne et utiliser la syntaxe de tableau pour accéder la propriété.

function ex(banana, minion) { 
    return banana[minion]; 
} 

Si vous voulez que le côté gauche d'un objet à une chaîne aussi bien (par exemple banana, vous pouvez utiliser eval(banana)[minion] mais qui pourrait soulever quelques sourcils à une revue de code. Notez que cela fonctionne pour les deux propriétés et les méthodes, par exemple eval(banana)[minion](), bien que je un peu de recul et se demander pourquoi vous avez besoin de faire ce genre de choses :) modérément Bonkers

+0

Désolé, je n'étais pas plus clair. 'minion' est censé faire référence à une méthode. Donc la fonction passera tout nom que je passe à 'minion' comme méthode pour' banana'. J'espère que cela a plus de sens. – AKG

+1

@AKG: Méthode ou propriété, peu importe. Vous pouvez utiliser la même idée pour les méthodes. – Jakob

+0

Veuillez voir la question mise à jour. Désolé pour la confusion. – AKG

Questions connexes