2012-07-27 63 views
-1

我有开始像这样一类:无法访问公共的JavaScript对象变种

function event() 
{ 
    this.event_id = null; 

,然后这一切又与初始化函数填充。

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

如果我运行此代码:

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

对于第一行控制台给我用填充事项标识事件对象的一个​​不错的表现,但对于二线它给了我零。

发生了什么事?变量应该是公共权利?

非常感谢您的帮助。

+1

您将其设置为空,您期望什么? – Prinzhorn 2012-07-27 10:54:16

+2

我认为你需要展示更多的代码。最好是你认为应该工作的完整测试用例。最好在jsfiddle上重复。 – Quentin 2012-07-27 10:54:55

+0

没有公共和私人的区别,任何对象属性都是公开的。 'null'是预期的值,因为你已经设置了它。 – Esailija 2012-07-27 10:56:32

回答

2

如果您的console.log是非标量值(例如对象),则只有在展开以查看chrome开发人员工具控制台中的对象属性时,才会检索其实际状态。短的数组或类似<的数组将会自动展开,尽管状态通常是这样(我的测试结果不一样,也许我只是看到了一些东西),但在这种情况下也不会立即检索到。

所以,如果你console.log(my_event.event_id);得到null,那么它实际上null那个console.log执行的时间。 console.log(my_event);的结果取决于何时在控制台中展开记录的对象。如果您发出修改event_id属性的ajax请求,并且在您在控制台中展开对象时请求已完成,它将显示已更改的值。

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