您不能在构造上访问对象文字中的其他属性。你得到一个,undefined
因为你没有变量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"), ...];
但是,应该没有这样的问题。如果您对数字进行硬编码,为什么不对网址进行硬编码?如果您不想要冗余,请不要将 id 存储两次并在每次需要时附加它。