12

我将从问题开始:

  1. 我正在更改对象文字的内容。(更改属性值
  2. Firebug 控制台(第一次单击)显示正确的值。
  3. 但过了一段时间,它会卡在一个特定的值上并停止改变。

注意:stringify对象的表示 - 始终显示正确的值

以下是详细信息:

  1. 我在中选择了一个streettextbox它应该StreetText在对象中设置值)

  2. 我看着console(宽线)并按下最后一行,看着街道上的文字

一开始还可以。在第二次尝试中,我选择了另一条街道后,它保持在旧值上。

但是,当我按下刷新(在对象上)时,它会显示正确的街道名称。

这里发生了什么?

在此处输入图像描述

我的对象是常规对象文字:

  var obj =
            {
                getData: function ()
                {

                    obj.CountryId = $(".ddlCountry").val() || "";
                    obj.CountryText = $(".ddlCountry  :selected").text() || "";
                    obj.StateId = $(".ddlState:visible").val() || "";
                    obj.StateText = $(".ddlState:visible  :selected").text() || "";
                    obj.CityId = $(".hfDataIdCity").val() || "";
                    obj.CityText = $(".hfDataTextCity").val() || "";
                    obj.StreetId = $(".hfDataIdStreet").val() || "";
                    obj.StreetText = $(".hfDataTextStreet").val() || "";
                }
        }

控制台上的显示是通过单击按钮进行的​​:

 obj.getData();
 console.log(obj);

为什么我没有看到正确的值?(仅在刷新后......)

ps:ff:14.0.1
fb:1.10.6

并且缓存已关闭

在此处输入图像描述

4

1 回答 1

4

将console.dir(obj) 用于不是console.log(obj) 的对象,通过这样做,您将获得对象的字符串,因此更新它仍然可以在您的代码中工作,但不会显示在控制台中。字符串是不可变的,因此您的控制台中不会显示任何属性更新。提示:在 chrome 调试器中使用 watch 表达式。

于 2013-02-05T18:41:17.890 回答