J'ai cherché des solutions, mais je n'ai trouvé aucun résultat.
J'ai une variable appelée onlyVideo
.
"onlyVideo"
la chaîne est passée dans une fonction. Je veux définir la variable onlyVideo
à l'intérieur de la fonction comme quelque chose. Comment puis je faire ça?
(Il y a un certain nombre de variables qui pourraient être appelées dans la fonction, donc j'en ai besoin pour fonctionner dynamiquement, pas des if
instructions codées en dur .)
Edit: Il y a probablement une meilleure façon de faire ce que vous essayez de faire. Je l'ai demandé au début de mon aventure JavaScript. Découvrez comment fonctionnent les objets JavaScript.
Une introduction simple:
// create JavaScript object
var obj = { "key1": 1 };
// assign - set "key2" to 2
obj.key2 = 2;
// read values
obj.key1 === 1;
obj.key2 === 2;
// read values with a string, same result as above
// but works with special characters and spaces
// and of course variables
obj["key1"] === 1;
obj["key2"] === 2;
// read with a variable
var key1Str = "key1";
obj[key1Str] === 1;
javascript
variables
switz
la source
la source
Réponses:
S'il s'agit d'une variable globale, alors
window[variableName]
ou dans votre caswindow["onlyVideo"]
, faites l'affaire.la source
scope[property]
ou mêmethis[property]
this
est le contexte, ce qu'il pointe dépend de la façon dont la fonction est appelée. Dans JS, 50% du tempsthis
est àwindow
moins que vous n'activiez le mode strict etthis
devienneundefined
et générera une erreur. La portée est quelque chose de complètement différent et ce n'est pas un objet (sauf la portée globale qui est reflétée par l'window
objet)WebWorkers
(où seself
réfère à la portée globale, tout comme dans le navigateur, où il est égal àwindow
) et dans Node.js, oùglobal
est la variable souhaitée. Et il fonctionne plus récemment avec des étendues locales, telles que le corps de la fonction.const
utilisant cette méthode?Javascript a une
eval()
fonction pour de telles occasions:Edit: Désolé, je pense que j'ai survolé la question trop rapidement. Cela ne vous obtiendra que la variable, pour la définir, vous avez besoin
ou si vous utilisez une chaîne:
Mais j'imagine qu'il existe un moyen plus approprié d'accomplir ce que vous recherchez? Je ne pense pas que eval () soit quelque chose que vous voulez vraiment utiliser à moins qu'il y ait une bonne raison à cela. eval ()
la source
eval()
réponse a- t-elle été rejetée à la suppression et celle-ci a-t-elle été votée?window[varname]
a pour effet secondaire d'introduire des variables globales, ce qui n'est peut-être pas souhaitable. @Shaz Je ne pense pas que vous accordiez suffisamment de crédit aux interprètes JS modernes. Ils sont extrêmement rapides, et l'analyse et l'exécution d'une simple opération d'affectation d'une ligne ne vont pas augmenter l'utilisation du processeur de quiconque tant que cela n'est pas fait dans un minuteur de 1 ms ou une boucle serrée.En ce qui concerne eval vs solutions variables globales ...
Je pense qu'il y a des avantages pour chacun, mais c'est vraiment une fausse dichotomie. Si vous êtes paranoïaque de l'espace de noms global, créez simplement un espace de noms temporaire et utilisez la même technique.
Je suis sûr que vous pourriez alors accéder en tant que tempNamespace.myVarProperty (maintenant 5), en évitant d'utiliser une fenêtre pour le stockage. (La chaîne peut également être placée directement entre crochets)
la source
Dites non au eval maléfique . Exemple ici: https://jsfiddle.net/Shaz/WmA8t/
la source
function aScope() { this[myString] = function() { alert("Hello!"); };};
this
n'est pas une référence à la portée locale mais à l'objet auquel la fonction est liée pendant l'appel.Vous pouvez accéder à l'objet fenêtre en tant que tableau associatif et le définir de cette façon
la source
La méthode window ['variableName'] fonctionne UNIQUEMENT si la variable est définie dans la portée globale. La bonne réponse est "Refactor". Si vous pouvez fournir un contexte "Objet", une solution générale possible existe, mais il existe certaines variables qu'aucune fonction globale ne pourrait résoudre en fonction de la portée de la variable.
la source
Si vous essayez d'accéder à la propriété d'un objet, vous devez commencer par la portée de
window
et parcourir chaque propriété de l'objet jusqu'à ce que vous arriviez à celle que vous souhaitez. En supposant que celaa.b.c
a été défini ailleurs dans le script, vous pouvez utiliser ce qui suit:Cela fonctionnera pour obtenir la propriété de n'importe quel objet, quelle que soit sa profondeur.
la source
name
comme nom de variable, votre exemple échoue, mais il fonctionne avec d'autres noms de variables. Cela peut être dû au fait que l'objet Window possède déjà unename
variable. En outre, l'inclusion de la.value
méthode a provoqué un échec. La capacité d'interpréter des variables d'objets profondément imbriquées est ce que je recherche et votre méthode indique une bonne direction. Merci.Uncaught TypeError: Cannot read property 'split' of undefined
Vous pouvez faire comme ça
la source
Cela peut être fait comme ça
la source
Le code suivant facilite la référence à chacun de vos DIV et autres éléments HTML en JavaScript. Ce code doit être inclus juste avant la balise, afin que tous les éléments HTML aient été vus. Il doit être suivi de votre code JavaScript.
la source
permettez-moi d'être plus clair
la source