我的网站上有以下代码:
function GroupObject(GroupID, GroupColor, GroupName, CalendarID, UserEnable, IrcChannel) {
this.uid = GroupID;
this.color = GroupColor;
this.groupname = GroupName;
this.calendarid = CalendarID;
this.userenable = UserEnable;
this.ircchannel = IrcChannel;
}
function GetGroupObjects(callback) {
var GlobalDB = [];
$.getJSON("Some Data From Google Docs",
function (data) {
$.each(data.feed.entry, function (i, entry) {
GlobalDB.push(new GroupObject(entry.gsx$uid.$t,
"000000",
SanitizeInputText(entry.gsx$group.$t),
SanitizeInputCalID(entry.gsx$calendarid.$t),
true,
SanitizeInputText(entry.gsx$ircchannel.$t)))
});
console.log(GlobalDB[0]);
console.log(GlobalDB[0].color);
callback(GlobalDB);
});
};
新创建的GlobalDB的所有参数都是正确的,唯一的例外是“ color”参数。 console.log(GlobalDB [0])返回:
GroupObject
calendarid: "CalOfTNG"
color: "AB8B00"
groupname: "Austin TNG"
ircchannel: "AustinTNG"
uid: "TNG"
userenable: true
__proto__: GroupObject
在Chrome和Firefox中,它为“ AB8B00”颜色带来了相同的值。知道为什么吗?在上面的代码中,它应该为0。console.log(GlobalDB [0] .color)确实返回000000。但是当
从回调返回时,我使用GlobalDB再次获得AB8B00。
用户启用,另一方面效果很好。我只是找不到参数.color的问题,因为它在Chrome和Firefox中均失败。
提前致谢。
最佳答案
您似乎受到了我经常遇到的console.log
问题的困扰:您看不到该对象在登录时的样子,而是在以后的样子,因为浏览器并不会在您登录时立即进行深度克隆,只是存储其参考。
此效果不会影响原始值,例如字符串,这就是为什么登录GlobalDB[0].color
时颜色最初看起来很好的原因。
记录时颜色为“ 000000”。它可能在您调用callback(GlobalDB)
之后更改。
另请参见this related question (and answer)。
关于javascript - 在JavaScript中未正确设置On对象参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14296722/