2012-03-30 4 views
3

평가()없이 객체로 문자열을 변환 해당 문자열에서 변수 opcategory을 참조하는 객체 ?? 예를 들어jQuery를 나는 다음과 같은 변수가있다

:

var myarray = "op" + myparent; 

그래서 난과 같이 객체를 사용할 수있는 :

alert(myarray[2]); 

감사합니다! (읽기 : 악마와 해키)

도 덜 우아하고있다
var myarray = op[myparent]; 

:

var op = { 
    day: [], 
    category: [], 
    barrio: [] 
}; 

이 같이 참조 할 수 있습니다

+0

안녕하세요, 당신은'ev 알()'? jQuery를 사용하기 때문에 [globalEval] (http://api.jquery.com/jQuery.globalEval/) – NoLifeKing

+0

사람들이 악마라고 말해도된다. –

+0

'eval()'은 나쁘지 않다. 들었어. 올바르게 사용하고 올바른 것으로 확인 된 입력에 대해서만 사용하면 그리 나쁘지 않습니다. 제 말은 .. 누군가가 방화 녀 (firebug)에 접근 할 수 있다면, 자바 스크립트를 실행하는 콘솔을 가지고 있기 때문에 원하는 사이트에서'eval()'을 사용할 수 있습니다. :) – NoLifeKing

답변

2

당신은 전역 범위에서 선언 된 변수를 해결할 수 그래도 작동합니다 :

var answer = (
    function(){ 
     this.myvar = "the value" 
     return this["myvar"] 
    } 
).call({}) 
// 'answer' will be "the value" 
3

나는 객체가이에 대한 최선의 해결책이라고 생각 솔루션을 그 opday 및 그 외가 전역 변수 인 경우에만 작동합니다. 모든 전역 변수가 동적으로 생성하고 액세스 변수 수있는 window 객체의 속성입니다 :

var myarray = window["op" + myparent]; 
2

당신이 어떤 방법으로, 이름 전역 변수에 액세스해야하는 경우 그것을 :

var myarray = window["op"+myparent]; 

하지만 모두 지도 개체에 넣는 것이 훨씬 낫습니다.

var answer = (
    function(){ 
     var myvar = "the value" 
     return this["myvar"] 
    } 
).call({}) 
// answer will be 'undefined' 

명시 적으로 묶는 범위가 this에 바르 : 당신이 함수의 내부를 충실 경우

var myCustomVar = "my value" 
, nameOfVar = "myCustomVar" 
alert(this[nameOfVar]) 
// you get "my value" 

그러나이 작동하지 않습니다