Ich habe nach Lösungen gesucht, aber keine gefunden.
Ich habe eine Variable namens onlyVideo
.
"onlyVideo"
Die Zeichenfolge wird an eine Funktion übergeben. Ich möchte die Variable onlyVideo
innerhalb der Funktion als etwas setzen. Wie kann ich das machen?
(Es gibt eine Reihe von Variablen, die in die Funktion aufgerufen werden könnten, daher muss sie dynamisch funktionieren, nicht fest codierte if
Anweisungen.)
Bearbeiten: Es gibt wahrscheinlich eine bessere Möglichkeit, das zu tun, was Sie versuchen. Das habe ich schon früh in meinem JavaScript-Abenteuer gefragt. Überprüfen Sie, wie JavaScript-Objekte funktionieren.
Ein einfaches Intro:
// 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
quelle
quelle
Antworten:
Wenn es sich um eine globale Variable handelt, dann
window[variableName]
oder in Ihrem Fallwindow["onlyVideo"]
sollten Sie den Trick ausführen.quelle
scope[property]
oder sogarthis[property]
this
Ist der Kontext, worauf er hinweist, hängt davon ab, wie die Funktion aufgerufen wird. In JS ist 50% der Zeit,this
eswindow
sei denn, Sie aktivieren den strengen Modus undthis
wirdundefined
und wird einen Fehler auslösen. Der Bereich ist etwas völlig anderes und kein Objekt (außer dem globalen Bereich, der vomwindow
Objekt gespiegelt wird )WebWorkers
(woself
auf den globalen Bereich verwiesen wird, genau wie im Browser, wo es gleich istwindow
) und Node.js, woglobal
sich die gewünschte Variable befindet. Und es funktioniert neuer mit lokalen Bereichen, wie dem Funktionskörper.const
Möglichkeit, diese Methode zu definieren ?Javascript hat eine
eval()
Funktion für solche Gelegenheiten:Edit: Sorry, ich denke ich habe die Frage zu schnell überflogen. Dadurch erhalten Sie nur die Variable, die Sie zum Festlegen benötigen
oder wenn Sie eine Zeichenfolge verwenden:
Aber ich stelle mir vor, es gibt einen angemesseneren Weg, um das zu erreichen, wonach Sie suchen? Ich denke nicht, dass eval () etwas ist, das Sie wirklich verwenden möchten, es sei denn, es gibt einen guten Grund dafür. eval ()
quelle
eval()
Antwort auf Löschung herabgestuft und diese aufgestimmt?window[varname]
hat den Nebeneffekt, dass globale Variablen eingeführt werden, die möglicherweise nicht erwünscht sind. @Shaz Ich glaube nicht, dass Sie modernen JS-Dolmetschern genug Anerkennung schenken. Sie sind extrem schnell und das Parsen und Ausführen einer einfachen einzeiligen Zuweisungsoperation wird die CPU-Auslastung von niemandem erhöhen, solange dies nicht in einem 1-ms-Timer oder einer engen Schleife erfolgt.Soweit eval vs. globale variable Lösungen ...
Ich denke, jeder hat Vorteile, aber das ist wirklich eine falsche Zweiteilung. Wenn Sie vom globalen Namespace paranoid sind, erstellen Sie einfach einen temporären Namespace und verwenden Sie dieselbe Technik.
Ziemlich sicher, dass Sie dann als tempNamespace.myVarProperty (jetzt 5) darauf zugreifen können, ohne das Fenster für die Speicherung zu verwenden. (Die Zeichenfolge kann auch direkt in die Klammern gesetzt werden.)
quelle
Sag nein zu der bösen Bewertung. Beispiel hier: https://jsfiddle.net/Shaz/WmA8t/
quelle
function aScope() { this[myString] = function() { alert("Hello!"); };};
this
sich nicht auf den lokalen Bereich, sondern auf das Objekt, an das die Funktion während des Aufrufs gebunden ist.Sie können als assoziatives Array auf das Fensterobjekt zugreifen und es auf diese Weise festlegen
quelle
Die Fenstermethode ['variableName'] funktioniert NUR, wenn die Variable im globalen Bereich definiert ist. Die richtige Antwort lautet "Refactor". Wenn Sie einen "Objekt" -Kontext angeben können, gibt es eine mögliche allgemeine Lösung, aber es gibt einige Variablen, die keine globale Funktion basierend auf dem Umfang der Variablen auflösen könnte.
quelle
Wenn Sie versuchen, auf die Eigenschaft eines Objekts zuzugreifen, müssen Sie mit dem Bereich von beginnen
window
und jede Eigenschaft des Objekts durchgehen, bis Sie zu der gewünschten Eigenschaft gelangen. Angenommen, diesa.b.c
wurde an einer anderen Stelle im Skript definiert, können Sie Folgendes verwenden:Dies funktioniert, um die Eigenschaft eines Objekts zu erhalten, egal wie tief es ist.
quelle
name
Ihr Beispiel fehlschlägt, wenn ich es als Variablennamen verwende, aber es funktioniert mit anderen Variablennamen. Dies hat möglicherweise damit zu tun, dass das Window-Objekt bereits einename
Variable enthält. Auch das Einbeziehen der.value
Methode verursachte einen Fehler. Ich suche nach der Fähigkeit, tief verschachtelte Objektvariablen zu interpretieren, und Ihre Methode zeigt eine gute Richtung an. Vielen Dank.Uncaught TypeError: Cannot read property 'split' of undefined
Sie können dies tun
quelle
Das kann so gemacht werden
quelle
Der folgende Code erleichtert das Verweisen auf Ihre DIVs und andere HTML-Elemente in JavaScript. Dieser Code sollte direkt vor dem Tag eingefügt werden, damit alle HTML-Elemente angezeigt werden. Es sollte Ihr JavaScript-Code folgen.
quelle