引用自身的Javascript对象。。。有什么问题吗?
由于Javascript允许通过引用来分配复合值,因此如果Javascript对象引用自身,它将创建一组无限的引用,如控制台中所示:引用自身的Javascript对象。。。有什么问题吗?,javascript,Javascript,由于Javascript允许通过引用来分配复合值,因此如果Javascript对象引用自身,它将创建一组无限的引用,如控制台中所示: 这看起来像某种无限循环,但Chrome似乎没有问题。这样做是否存在内存问题或其他风险?就内存而言,没有问题。物体只是说它在哪里。这取决于您是否一次又一次地询问它。只有在“不知道如何正确终止递归对象图”的上下文中使用时,才会导致堆栈溢出错误或“无限递归”。这样一个对象将“中断”的一个地方是使用JSON.stringify(特别是,当它检测递归对象图时会抛出一个错误
这看起来像某种无限循环,但Chrome似乎没有问题。这样做是否存在内存问题或其他风险?就内存而言,没有问题。物体只是说它在哪里。这取决于您是否一次又一次地询问它。只有在“不知道如何正确终止递归对象图”的上下文中使用时,才会导致堆栈溢出错误或“无限递归”。这样一个对象将“中断”的一个地方是使用
JSON.stringify
(特别是,当它检测递归对象图时会抛出一个错误)。注意Chrome控制台在检测到cycle.oth时是如何在{pointers:Array(1)}
的“引用”中添加的。从防御性编程/程序员的角度来看,可以认为这样一个对象“仅”应该在这样一种情况下使用,因为这种情况可以保证只能以循环感知的方式进行遍历。感谢您的快速响应。非常有用。循环引用在IE6中是个问题,因为它。还没死呢。今天的浏览器?一点问题也没有。@user2864740:“注意Chrome控制台在检测到循环时是如何在{pointers:Array(1)}”引用中添加的。”这与此无关;Chrome以相同的方式表示非循环数组属性。与{指针:[1]}
比较。