我使用对象字面值来收集动态添加的各种DOM元素,因为我希望能够通过变量引用它们(下面的代码被简化了,将会有更多,如事件等等):JS对象字面范围和引用
ui = {
header : $('<div id="header"></div>').appendTo('body').css('color','#009'),
footer : $('<div id="footer"></div>').appendTo('body').css('color','#990')
}
现在,我希望我可以添加其他对象到这一点,但它会引发错误:
ui = {
header : $('<div id="header"></div>').appendTo('body').css('color','#009'),
footer : $('<div id="footer"></div>').appendTo('body').css('color','#990'),
headerSpecial : $('<span>some header</span>').appendTo(ui.header) // this line will cause an error "ui is not defined"
}
我想这是因为直到UI对象是关闭的,我可以” t引用里面的东西呢。所以我必须将这些东西分解成单独的对象。但有什么办法可以在单个对象中完成这一切吗?我应该用匿名函数包装一些东西然后给他们打电话吗?
JSON是数据的*字符串表示*,恰好与JavaScript对象相似。你有什么是JavaScript对象文字,与JSON无关。 – 2013-04-11 22:12:09
你的想法是正确的。当你尝试ser'headSpecial'时,'ui.header'还不存在。 – 2013-04-11 22:13:09
我同意火箭。我不认为JSON的误解是造成这个问题的原因,但是当tim修复第一个问题并且尝试使用非字符串的字符串操作时,这将是一个重要的区别。 – AaronLS 2013-04-11 22:14:48