我有一个类似这样开始的课程:
function event()
{
this.event_id = null;
然后全部填充init函数。
在我的脚本的另一部分中,我无法访问这些变量。
如果我运行此代码:
console.log(my_event);
console.log(my_event.event_id);
对于第一行,控制台为我提供了一个很好的表示事件对象,并填充了event_id,但对于第二行,它给了我null。
发生了什么事?变量应该是公共的吗?
非常感谢您的帮助。
答案 0 :(得分:2)
当您console.log
非标量值(例如对象)时,仅在您展开以查看chrome developer tools控制台中的对象属性时检索其实际状态。短数组或类似数组的< 100个项目会自动扩展虽然状态通常(我的测试结果有所不同,也许我只是看到的东西)在这种情况下也没有立即检索。
因此,如果您从null
获得console.log(my_event.event_id);
,那么null
执行时实际上就是console.log
。 console.log(my_event);
的结果取决于何时在控制台中展开记录的对象。如果您创建了一个修改event_id
属性的ajax请求,并且在您在控制台中展开对象时请求已完成,则它将显示更改的值。
此外,javascript中的每个对象属性都是“public”。