2009-06-10 2 views
2

Предположим, что я объявляю структурированную Javascript переменную так:самореференция в объявлении структурированной JavaScript переменной

var mydata = {'list':[ 
{'fname':'george','lname':'washington'} 
,{'fname':'oscar','lname':'wilde'} 
,{'fname':'james','lname':'polk'} 
] 
,'summary':this.list[1]['lname'] 
} 

Вопрос: Как я могу гарантировать, что

this.list[1]['lname'] 

равен «Уайльд», и что мое «это» на самом деле ссылается на на то, что я намерен?

+0

Примечание: Я помню, что на самом деле я видел, как кто-то делал что-то подобное в ответном переполнении стека и говорил «AHA!». для себя, но я не могу вспомнить почтовый адрес. – dreftymac

+0

Возможно, вы ссылаетесь на одно из этих сообщений: http://stackoverflow.com/search?q=javascript+aha –

+0

Хех ... это смешно^_ ^ – dreftymac

ответ

5

Вы также мог бы сделать эту работу в функции.

var mydata = {'list':[ 
{'fname':'george','lname':'washington'} 
,{'fname':'oscar','lname':'wilde'} 
,{'fname':'james','lname':'polk'} 
] 
,'summary':function(){return this.list[1]['lname']} 
} 

alert(mydata.summary()); 
5

это не будет работать, как написано, но вы можете сделать:

var mydata = {'list':[ 
{'fname':'george','lname':'washington'} 
,{'fname':'oscar','lname':'wilde'} 
,{'fname':'james','lname':'polk'} 
] 
} 

mydata.summary = mydata.list[1]['lname']; 
Смежные вопросы