2013-05-20 5 views
0

Как я могу ссылаться на переменную, задавая ее в Javascript?Ссылка на переменную в определении?

var person = { 
basic: { 
    name: 'jack', 
    sex: 0, 
}, 
profile: { 
    AA: 'jack' + '_sth', # How can I write like this: AA: basic.name + '_sth' 
}, 
}; 
+0

возможно дубликат (HTTP [ссылочной переменной в литерала объекта?]: // StackOverflow .com/questions/4858931/reference-variable-in-object-literal) – Quentin

+0

Вы не можете иметь запятую перед закрытием литерала объекта: ',} 'не разрешено. – pvorb

ответ

1

Попробуйте

var person = { 
    basic: { 
     name: 'jack', 
     sex: 0 
    } 
    }; 
    person.profile= { 
     AA:person.basic.name + '_sth' 
    }; 
+0

Если кто-то отклоняет этот ответ, он/она должен объяснить, почему. – pvorb

+0

+1 до ложного -1 –

+0

@pvorb изначально я забыл заменить collon равным. – Anoop

3

Вы не можете.

Вы должны сделать

var name = 'jack'; 

var person = { 
basic: { 
    name: name, 
    sex: 0 
}, 
profile: { 
    AA: name + '_sth' 
} 
}; 

Так же, как this answer говорит, вы также можете сделать что-то вроде следующего

function Person() { 
    this.basic = { 
    name: 'jack', 
    sex: 0 
    }; 
    this.profile = { 
    AA: this.basic.name + '_sth' 
    }; 
} 

var person = new Person(); 

Но это создает экземпляр Person, не простой и простой объект JS ,

0

вы просто не можете. кроме работы вокруг, как sushil's и pvorb's, вы не можете ссылаться на объект, который все еще определяется.

также вы можете попробовать getfunction

0

Вы также можете использовать сразу же запущенной функции Expression (IFFE):

var person = function(name) { 
var prsn = { 
     basic: { 
     name: name || 'anonymous', 
     sex: 0 
     } 
     }; 
return {basic: prsn.basic, profile: {AA: prsn.basic.name + '_sth'}}; 
}('Jack'); 
Смежные вопросы