해결책을 찾았지만 그 해결책을 찾지 못했습니다.
라는 변수가 onlyVideo
있습니다.
"onlyVideo"
문자열은 함수로 전달됩니다. onlyVideo
함수 내부의 변수 를 무언가 로 설정하고 싶습니다 . 어떻게해야합니까?
(함수에 호출 될 수있는 많은 변수가 있으므로 하드 코딩 된 if
명령문이 아닌 동적으로 작동해야합니다 .)
편집 : 아마도 당신이하려는 일을하는 더 좋은 방법이있을 것입니다. JavaScript 어드벤처에서 초기에 이것을 물었습니다. JavaScript 객체의 작동 방식을 확인하십시오.
간단한 소개 :
// 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;
답변
전역 변수 인 경우 window[variableName]
또는 귀하의 경우 window["onlyVideo"]
트릭을 수행해야합니다.
답변
Javascript에는 eval()
다음과 같은 기능이 있습니다.
function (varString) {
var myVar = eval(varString);
// .....
}
편집 : 죄송합니다. 질문을 너무 빨리 감추었습니다. 이것은 변수를 가져 와서 필요한 것으로 설정합니다.
function SetTo5(varString) {
var newValue = 5;
eval(varString + " = " + newValue);
}
또는 문자열을 사용하는 경우 :
function SetToString(varString) {
var newValue = "string";
eval(varString + " = " + "'" + newValue + "'");
}
그러나 당신이 찾고있는 것을 성취하는 더 적절한 방법이 있다고 생각합니까? 나는 eval ()이 좋은 이유가 없다면 정말로 사용하고 싶은 것이라고 생각하지 않습니다. eval ()
답변
평가 대 글로벌 변수 솔루션까지 …
나는 각각에 장점이 있다고 생각하지만 이것은 실제로 잘못된 이분법입니다. 글로벌 네임 스페이스에 대한 편집증이라면 임시 네임 스페이스를 만들고 동일한 기술을 사용하십시오.
var tempNamespace = {};
var myString = "myVarProperty";
tempNamespace[myString] = 5;
그런 다음 저장 창을 사용하지 않고 tempNamespace.myVarProperty (현재 5)로 액세스 할 수 있는지 확인하십시오. (끈은 괄호에 직접 넣을 수도 있습니다)
답변
var myString = "echoHello";
window[myString] = function() {
alert("Hello!");
}
echoHello();
받는 사람 아무 말도 악마의 평가. 예 : https://jsfiddle.net/Shaz/WmA8t/
답변
창 객체를 연관 배열로 액세스하여 그렇게 설정할 수 있습니다
window["onlyVideo"] = "TEST";
document.write(onlyVideo);
답변
window [ ‘variableName’] 메소드는 변수가 전역 범위에 정의 된 경우에만 작동합니다. 정답은 “리 팩터”입니다. “객체”컨텍스트를 제공 할 수있는 경우 가능한 일반적인 솔루션이 존재하지만 변수의 범위를 기반으로 전역 함수가 해결할 수없는 일부 변수가 있습니다.
(function(){
var findMe = 'no way';
})();
답변
객체의 속성에 액세스하려는 경우 객체의 범위로 시작하여 원하는 window
속성에 도달 할 때까지 객체의 각 속성을 통과해야합니다. a.b.c
스크립트 어딘가에 정의되어 있다고 가정하면 다음을 사용할 수 있습니다.
var values = window;
var str = 'a.b.c'.values.split('.');
for(var i=0; i < str.length; i++)
values = values[str[i]];
깊이에 관계없이 모든 객체의 속성을 얻는 데 효과적입니다.