无法访问公共JavaScript对象var

时间:2012-07-27 10:52:41

标签: javascript oop

我有一个类似这样开始的课​​程:

function event()
{
    this.event_id = null;

然后全部填充init函数。

在我的脚本的另一部分中,我无法访问这些变量。

如果我运行此代码:

    console.log(my_event);
    console.log(my_event.event_id);

对于第一行,控制台为我提供了一个很好的表示事件对象,并填充了event_id,但对于第二行,它给了我null。

发生了什么事?变量应该是公共的吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

当您console.log非标量值(例如对象)时,仅在您展开以查看chrome developer tools控制台中的对象属性时检索其实际状态。短数组或类似数组的< 100个项目会自动扩展虽然状态通常(我的测试结果有所不同,也许我只是看到的东西)在这种情况下也没有立即检索。

因此,如果您从null获得console.log(my_event.event_id);,那么null执行时实际上就是console.logconsole.log(my_event);的结果取决于何时在控制台中展开记录的对象。如果您创建了一个修改event_id属性的ajax请求,并且在您在控制台中展开对象时请求已完成,则它将显示更改的值。

此外,javascript中的每个对象属性都是“public”。