admin管理员组

文章数量:1317565

Suppose I declare a structured Javascript variable like this:

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

Question: How can I ensure that

this.list[1]['lname']

equals 'wilde' and that my "this" is actually referring to what I intend?

Suppose I declare a structured Javascript variable like this:

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

Question: How can I ensure that

this.list[1]['lname']

equals 'wilde' and that my "this" is actually referring to what I intend?

Share Improve this question asked Jun 10, 2009 at 22:08 dreftymacdreftymac 32.5k26 gold badges124 silver badges188 bronze badges 3
  • Note: I remember actually seeing someone do something like this in a stack overflow answer and saying "AHA!" to myself, but I cannot remember the post url. – dreftymac Commented Jun 10, 2009 at 22:28
  • You may be refering to one of these posts: stackoverflow./search?q=javascript+aha – Jose Basilio Commented Jun 10, 2009 at 22:43
  • heh ... that's funny ^_^ – dreftymac Commented Jun 10, 2009 at 23:18
Add a ment  | 

2 Answers 2

Reset to default 5

You could also make this work in a function.

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());

this won't work as written, but you could do:

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

mydata.summary = mydata.list[1]['lname'];

本文标签: jsonselfreference within declaration of a structured javascript variableStack Overflow