Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当直接访问作为数组的javascript对象属性时,它显示为空_Javascript_Arrays_Object_Properties - Fatal编程技术网

当直接访问作为数组的javascript对象属性时,它显示为空

当直接访问作为数组的javascript对象属性时,它显示为空,javascript,arrays,object,properties,Javascript,Arrays,Object,Properties,我有一个最奇怪的问题,我一辈子都想不出来。 如果我这样做: console.log(settings); 我明白了: Object{ activeImage: 0 containerBorderSize: 10 containerResizeSpeed: 400 fixedNavigation: false imageArray: Array[58] imageBlank: "http://www.cappellaniauniromatre.org/wp-content/plugins/nex

我有一个最奇怪的问题,我一辈子都想不出来。 如果我这样做:

console.log(settings);
我明白了:

Object{
activeImage: 0
containerBorderSize: 10
containerResizeSpeed: 400
fixedNavigation: false
imageArray: Array[58]
imageBlank: "http://www.cappellaniauniromatre.org/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/lightbox-blank.gif"
imageBtnClose: "http://www.cappellaniauniromatre.org/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/lightbox-btn-close.gif"
imageBtnNext: "http://www.cappellaniauniromatre.org/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/lightbox-btn-next.gif"
imageBtnPrev: "http://www.cappellaniauniromatre.org/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/lightbox-btn-prev.gif"
imageLoading: "http://www.cappellaniauniromatre.org/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/jquery.lightbox/lightbox-ico-loading.gif"
keyToClose: "c"
keyToNext: "n"
keyToPrev: "p"
overlayBgColor: "#000"
overlayOpacity: 0.8
txtImage: "Image"
txtOf: "of"
__proto__: Object
}
现在,如果我这样做:

console.log(settings.imageArray);
我得到一个空数组

[]
我知道这个数组有58个元素,如果我直接访问属性,为什么它会显示为空? 如果我试图直接访问任何其他属性,我会得到正确的值。但如果我尝试访问“imageArray”,我会得到一个空数组。为什么会这样?

控制台。日志(设置)
将对
设置的实时引用放入控制台。这意味着
console.log(settings)
之后对
设置的任何更改都将显示在控制台中

例如:

var settings = { imageArray: [ ] };
console.log(settings);
console.log(settings.imageArray);
settings.imageArray = [ 'where', 'is', 'pancakes', 'house?' ];
console.log(settings.imageArray);
将在控制台中为您提供以下信息:

Object
    imageArray: Array[4]
[]
["where", "is", "pancakes", "house?"]
第一个
console.log(settings.imageArray)
为空,并保持为空,因为
settings.imageArray
引用被替换


演示:

很难说,你有没有办法制作一个现场演示来重现这个问题?真奇怪。您在多个浏览器中试用过吗?例如chrome和firefox+firebug?@elclars:这是它发生的页面:当你点击第一个图像时,控制台.log被调用,因为lightbox被打开。我没有连续调用,我正在替换相同的调用。。。虽然我想我可能理解,你的意思是数组之后会被清空,所以如果我直接调用它,它会显示为空,但如果我调用它存储在其中的对象,它不会显示为空。如果你还没有设置数组的长度,第一个控制台。log(settings)如何输出数组[4]。@NickM:因为我们分配
[“where”,“is”,“pancakes”,“house?”]
to
settings.imageArray
以后和
console.log(settings)
不会将
settings
的快照放在控制台中,它会将真实的活动对象放在那里。@Lwangaman:当你
console.log(settings.imageArray)
时,数组是空的,然后数组会改变,然后你看一下
设置中的内容
。我想在Chrome控制台中,当你展开一个记录的对象以查看嵌套属性等时,你会得到一个小“i”,当你将鼠标悬停在状态上时,“下面的对象状态在第一次展开时被捕获”