无法访问公共JavaScript对象变量

无法访问公共JavaScript对象变量,javascript,oop,Javascript,Oop,我有一节课是这样开始的: function event() { this.event_id = null; 然后用一个init函数填充它 在脚本的另一部分中,我无法访问这些变量 如果我运行此代码: console.log(my_event); console.log(my_event.event_id); 对于第一行,控制台为我提供了事件对象的良好表示,并填充了event_id,但是对于第二行,它为我提供了null 发生什么事了?变量应该是公共的,对吗 非常感谢您的帮

我有一节课是这样开始的:

function event()
{
    this.event_id = null;
然后用一个init函数填充它

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

如果我运行此代码:

    console.log(my_event);
    console.log(my_event.event_id);
对于第一行,控制台为我提供了事件对象的良好表示,并填充了event_id,但是对于第二行,它为我提供了null

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


非常感谢您的帮助。

当您在chrome developer tools console.log中查看非标量值(如对象)时,仅当您在chrome developer tools console中展开以查看对象属性时,才会检索其实际状态。短数组或小于100项的数组将自动扩展,尽管在这种情况下,状态通常不会立即检索(我的测试结果在这方面有所不同,可能我只是看到了一些东西)

因此,如果您从
console.log(my\u event.event\u id)获取
null
,那么在执行
console.log
时实际上是
null
console.log(my_事件)的结果取决于您在控制台中展开记录的对象的时间。如果您发出了修改
事件id
属性的ajax请求,并且该请求在您在console中展开对象时已完成,它将显示更改后的值


而且,javascript中的每个对象属性都是“公共的”

您将其设置为null,您期望得到什么?我认为您需要显示更多的代码。最好是一个您认为应该有效的完整测试用例。最好在JSFIDLE上复制。没有公共和私有的区别,任何对象属性都是公共的。而
null
是预期值,因为您已将其设置为该值。请输入更易于理解的代码。。因为我们不知道您是否已经用函数填充了
my\u事件
object@JonnyWhite如果它与此一起显示,则异步填充它。记录的对象仅在控制台中展开时查看状态,而不是在记录时查看状态。您遗漏了谜题的关键,即如何填充它的代码。