Procurei soluções, mas não consegui encontrar nenhuma que funcionasse.
Eu tenho uma variável chamada onlyVideo
.
"onlyVideo"
a cadeia é passada para uma função. Eu quero definir a variável onlyVideo
dentro da função como algo. Como eu posso fazer isso?
(Há várias variáveis que podem ser chamadas para a função, por isso preciso que ela funcione dinamicamente, não em if
instruções codificadas .)
Edit: Provavelmente existe uma maneira melhor de fazer o que você está tentando fazer. Perguntei isso no início da minha aventura em JavaScript. Confira como os objetos JavaScript funcionam.
Uma introdução simples:
// 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
fonte
fonte
Respostas:
Se é uma variável global, então
window[variableName]
ou no seu casowindow["onlyVideo"]
deve fazer o truque.fonte
scope[property]
ou mesmothis[property]
this
é contexto, o que ele aponta depende de como a função é chamada. Em JS, 50% do tempothis
é, awindow
menos que você ative o modo estrito ethis
torneundefined
- se e lançará um erro. O escopo é algo completamente diferente e não é um objeto (exceto escopo global que é espelhada pelowindow
objeto)WebWorkers
(onde seself
refere ao escopo global, exatamente como no navegador, onde é igual awindow
) e Node.js, ondeglobal
é a variável que você deseja. E funciona mais recentemente com escopos locais, como o corpo da função.const
usando esse método?Javascript tem uma
eval()
função para essas ocasiões:Edit: Desculpe, eu acho que deslizei a pergunta muito rapidamente. Isso só lhe dará a variável, para configurá-la você precisa
ou se estiver usando uma string:
Mas imagino que haja uma maneira mais apropriada de realizar o que você está procurando? Não acho que eval () seja algo que você realmente queira usar, a menos que haja uma grande razão para isso. eval ()
fonte
eval()
resposta foi votada para exclusão e esta foi votada?window[varname]
tem o efeito colateral de introduzir variáveis globais, que podem não ser desejadas. @ Shaz Acho que você não dá crédito suficiente aos modernos intérpretes JS. Eles são extremamente rápidos e a análise e execução de uma operação simples de atribuição de uma linha não afetará o uso da CPU de ninguém, desde que não esteja sendo feito em um temporizador de 1 ms ou loop apertado.No que diz respeito a eval vs. soluções variáveis globais ...
Eu acho que há vantagens para cada um, mas essa é realmente uma falsa dicotomia. Se você é paranóico do espaço para nome global, crie um espaço para nome temporário e use a mesma técnica.
Com certeza você pode acessar como tempNamespace.myVarProperty (agora 5), evitando usar a janela para armazenamento. (A string também pode ser colocada diretamente entre parênteses)
fonte
Diga não ao malvado . Exemplo aqui: https://jsfiddle.net/Shaz/WmA8t/
fonte
function aScope() { this[myString] = function() { alert("Hello!"); };};
this
não se refere ao escopo local, mas ao objeto ao qual a função está vinculada durante a chamada.Você pode acessar o objeto de janela como uma matriz associativa e configurá-lo dessa maneira
fonte
O método window ['variableName'] ONLY funciona se a variável for definida no escopo global. A resposta correta é "Refatorar". Se você pode fornecer um contexto "Objeto", existe uma possível solução geral, mas existem algumas variáveis que nenhuma função global poderia resolver com base no escopo da variável.
fonte
Se você estiver tentando acessar a propriedade de um objeto, precisará começar com o escopo de
window
e percorrer cada propriedade do objeto até chegar à que deseja. Supondo quea.b.c
tenha sido definido em outro lugar no script, você pode usar o seguinte:Isso funcionará para obter a propriedade de qualquer objeto, não importa quão profundo seja.
fonte
name
como o nome da variável, seu exemplo falhará, mas funcionará com outros nomes de variáveis. Isso pode ter a ver com o objeto Window que já possui umaname
variável. Além disso, a inclusão do.value
método causou falha. A capacidade de interpretar variáveis de objeto profundamente aninhadas é o que estou procurando e seu método indica uma boa direção. Obrigado.Uncaught TypeError: Cannot read property 'split' of undefined
Você pode fazer assim
fonte
Isso pode ser feito assim
fonte
O código a seguir facilita a referência a cada um de seus DIVs e outros elementos HTML em JavaScript. Esse código deve ser incluído logo antes da tag, para que todos os elementos HTML sejam vistos. Deve ser seguido pelo seu código JavaScript.
fonte
deixe-me deixar mais claro
fonte