我的网站上有以下代码:

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/

10-12 07:26