0
var events = [
    {id: 100,url: "mc.jsp?id=" + id},
    {id: 200,url: "mc2.jsp?id=" + id},
    {id: 300,url: "mc2.jsp?id=" + id}
]

実行すると、url は に等しいmc.jsp?id=undefinedので、id (100) を URL に割り当てて の値を取得するにはどうすればよいmc.jsp?id=100でしょうか? また、2 番目の URLmc2.jsp=200と 3番目の URL を作成しmc2.jsp?id=300 て、配列の外部に割り当てを行うことができないようにします。

4

4 に答える 4

2

コンストラクションでは、オブジェクト リテラルの他のプロパティにアクセスできません。undefinedvariable がないため、 が得られますid。以下を使用する必要があります。

var id = 100;
var events = [{"id":id, "url":"mc.jsp?id=" + id}];

また:

var event = {id: 100};
event.url = "mc.jsp?id=" + event.id
var events = [event];

ただし、ゲッターを定義できます。

var events = [{id: 100, get url() { return "mc.jsp?id="+this.id; } }];

これは非常に複雑で理解しにくいものです。たぶん、次のようなことをする方が良いでしょう:

function MyEvent(id, mc) {
    this.id = id;
    this.mc = mc;
}
MyEvent.prototype.getUrl = function() {
    return "mc"+this.mc+".jsp?id="+this.id;
};

var events = [new MyEvent(100, ""), new MyEvent(200, "2"), ...];

しかし、そのような問題はないはずです。数字をハードコードするなら、なぜ URL をハードコードしないのですか? 冗長性が必要ない場合は、ID を 2 回保存して必要なたびに追加しないでください。

于 2012-05-20T21:25:37.640 に答える
0

id変数ではなくプロパティの名前であるため、追加できません。できるよ:

var ids = [100,200,300];
var events = [];
for(var i = 0; i < ids.length;i++){
    events[i] = {id: ids[i],url: "mc.jsp?id=" + ids[i]};
}
于 2012-05-20T21:26:01.203 に答える
0

あなたはそれのようなものを試すことができます。

var event = {
 'id': 100,
 'url': 'mc.jsp?id=' + event.id
}

var events = [];
events.push(event);  
于 2012-05-20T21:54:15.353 に答える
0
 var id = 100, events = [{id: id, url: "mc.jsp?id=" + id}];
于 2012-05-20T21:26:12.060 に答える