1

我的网站上有以下代码:

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 的所有参数都是正确的,唯一的例外是参数“颜色”。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 中都失败了。

提前致谢。

4

1 回答 1

2

您似乎遇到了console.log我经常遇到的一个问题:您在登录时看不到该对象,而是在稍后看到的,因为浏览器在您登录时不会立即对其进行深度克隆,而只是存储它的引用.

这种效果不会影响原始类型,如字符串,这就是为什么在您登录时颜色最初看起来很好的原因GlobalDB[0].color

登录时颜色为“000000”。之后它会发生变化,可能是当你打电话时callback(GlobalDB)

另请参阅此相关问题(和答案)

于 2013-01-12T18:48:03.360 回答