2014-02-24 2 views
1

JavaScript에서는 아래의 변수에서 객체를 만드는 더 짧은 방법이 있습니다.javascript 변수가있는 키로 객체 생성

var d = 'something'; 
function map(d){ 
    var obj = {}; 
    obj[d] = d; 
    return obj; 
} 

같은 짧은 보이지만, 키가 값보다 d 문자 그대로는 잘못된 것입니다.

function wrong(d){ 
    return {d:d} 
} 

나는 첫 번째 버전에는 신경 쓰지 않지만 간결한 방법으로 궁금해합니다.

감사합니다.

+0

그래, 첫 번째 방법을 사용하십시오. 두 번째 방법은 열쇠는'd'의 값이 아니라 * d *입니다. –

+0

호기심에서 키의 이름이 항상 가치라면 왜 둘 다 저장해야합니까? –

+0

obj.d = d를 사용하면 어떨까요? ? – Triode

답변

3

나는 익명의 기능을 인스턴스화하는 것이 좋습니다.

function map(d) { 
    return new function() { 
     this[d] = d; 
    }; 
} 

익명 기능을 사용하면 같은 위치에있는 모든 속성 선언을보다 체계적으로 유지할 수 있습니다. 다른 기본 키를 설정해야 할 경우 쉽게 추가 할 수 있습니다 :

객체와 대
new function() { 
    this[d] = d; 
    this.foo = 'bar'; 
}; 

이 두 장소에서 선언을해야합니다 문자 :

obj = { 
    foo: 'bar' 
}; 
obj[d] = d; 

모든 말했다, 원래의 코드는 괜찮습니다 그대로. 간결하고 읽기 쉽고 유지 보수가 용이합니다.

function map(d) { 
    var obj = {}; 
    obj[d] = d; 
    return obj; 
} 
+5

OP가 이미 가지고있는 것보다이게 더 좋은 이유는 무엇입니까? – jfriend00

+0

@ jfriend00, 나는 더 나은 것을 말한 적이 없지만'o = {foo : bar};를 사용하는 대신 모든 초기화를 같은 장소에 유지할 수 있기 때문에 추천합니다. o [fizz] = 버즈; 나는 그것이 코드를 더 조밀하게 유지한다고 느낀다. – zzzzBov

+0

@ jfriend00 또한 원본 코드 **는 실제로 처음에 나열된 op보다 짧습니다. 그러나 축소가 없으므로 실제로 차이가 없습니다. – zzzzBov