问题标签 [circular-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
307 浏览

c# - XmlSerialize 中的循环引用

我正在使用 T4 文本模板来生成 DTO POCO,以用于我的 NHibernate 域模型。

这些 POCO 将使用 ASMX Web 服务(与 Mono 兼容)发送到客户端,但如果我不XmlIgnore使用这些List<>属性,我将遇到循环引用。

有没有办法允许创建 POCO,以便循环引用仍然存在于客户端,但是当通过 Web 服务传递时,引用被忽略。

也许是习惯XmlSerializer?Mono 对 WCF 的支持不够,无法使用。

0 投票
8 回答
22830 浏览

php - 将 print_r 和 var_dump 与循环引用一起使用

我正在使用MVC 框架 Symfony,我想调试的很多内置对象似乎都有循环引用。print_r()这使得使用or打印变量是不可能的var_dump()(因为它们遵循无限循环引用或直到进程耗尽内存,以先到者为准)。

与其用一些智能编写我自己的print_r克隆,还有更好的选择吗?我只希望能够将变量(对象、数组或标量)打印到日志文件、http 标头或网页本身。

编辑:要澄清问题所在,请尝试以下代码:

它不适用于print_r(),var_dump()var_export()。错误信息是:

PHP 致命错误:第 10 行 print_r_test.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 523800 字节)

0 投票
3 回答
2948 浏览

javascript - Javascript 内存泄漏:为什么将对象分配给 null 工作?

关于用于防止内存泄漏的赋值为空修复的性质,有人可以为我挠痒痒吗?

我们都熟悉以下技术来阻止 DOM 对象和 JS 对象之间的循环引用,以防止内存泄漏:

问题是为什么上述工作会奏效?将“ele”设置为null肯定会停止循环引用,但它不会也阻止未来对“ele”的引用吗?

然而事件监听器会触发。它会抱怨“ele”对象为空(这是我们所期望的)。

鉴于上述行为,我们是否可以推断 Javascript 引擎实现将持有对事件侦听器的某种内部引用,并且在触发事件时调用的正是该引用?

如果有像上面这样的引用,那么赋值为空的修复不是依赖于实现吗?或者,它是 ECMAScript 规范的一部分。

据我了解,此修复程序一直是跨浏览器安全的。在应用 null 分配之前,我没有遇到很多具体提到检测/嗅探浏览器类型的示例。

===============编辑==================

我认为由于我提出问题的方式,可能会在不知不觉中直接从我试图传达的内容中进行讨论。引用的几个概念:

对象句柄/对象引用 ala:

以上不是我的痒所在,我很遗憾添加了这行:

以上使这看起来是一个封闭的问题。我完全期望如原始帖子中所示抛出错误。

我的痒更多的是……出于某种原因,在我看来,我一直认为 Javascript 引擎会ele.onlick()在事件触发并将元素设置为 null 时直接调用,类似于以下流程:

鉴于我们在原始帖子中知道事件处理程序在 ele 设置为 null 后仍会触发,因此在我看来,流程更类似于:

我的痒归结为一个问题,上面是大多数 Javascript 实现是如何工作的,其中一些内部引用指向分配的事件处理程序,并且在触发事件时调用了这个内部引用?

或者换一种 说法,是什么阻止了 Javascript 引擎实现ele.onclick()直接调用(暂时搁置设计和架构问题)?

也许我的思维过程工作方式不同,但是当他们第一次遇到 assignment-to-null 修复时,没有其他人再看一眼,其中元素引用为 null,但处理程序的代码仍然是执行?

0 投票
3 回答
2015 浏览

sql - 如何将所有父母的父母作为循环引用表中子对象的列?

我有一张桌子,里面有类似的列

如何编写查询以返回实体的所有父级级别,以返回类似

无论如何,我都不是 SQL 忍者。这可能吗?如果是这样,怎么做?

我正在使用 Microsoft SQL Server 数据库。

0 投票
4 回答
1156 浏览

c# - 循环引用列表的问题

我有一个小问题,我想听听你的意见。

我正在处理文件而不是参考其他文件。从任何文档开始,我都需要获取该文档引用的所有文档的 ID。问题是允许循环引用,所以如果 A ref B ref C,C 可以再次引用 A,我进入循环。如何在 C# 中解决这个问题?

一个小例子:

假设这是一个代表文档的类:

现在让我们创建一个包含一些引用的 Document 类:

现在我需要在 Document 类中实现一个方法,比如

最好的方法是什么?可以实现任何特定的算法吗?

任何建议都会被接受!

谢谢

0 投票
3 回答
670 浏览

c# - 使用 c# struct 域模型中的循环引用

当两个结构之间存在循环引用时会发生什么?对于下面的示例,内存分配是如何工作的,或者它会产生错误吗?

0 投票
1 回答
1446 浏览

.net - EF 4.1 + MVC + JSON 循环引用异常的最佳解决方案?

我正在使用 EF 4.1 Database First 方法,使用 T4 模板在单独的程序集中生成我的 POCO 类。我有用于获取数据的存储库,以及用于与 UI 通信的服务层。

我试图制作级联下拉菜单。我是 MVC 和 EF 4.1 的新手,所以我在 stackoverflow 中搜索了可能的解决方案。

这是示例视图模型类:

到目前为止,我所阅读的解决方案是:

  1. ScriptIgnoreAttribute在 引用属性上使用System.Web.Script.Serialization- 我真的不想这样做,因为我不想在我的 POCO 项目中添加对 System.Web 的引用

  2. 在 EF 4.1 DbContext 中禁用延迟加载 - 我不确定我是否要在我的项目中使用 Include

  3. 返回匿名类型 - 当我的项目变大时,我会遇到这种方法的问题吗?

  4. 使用 ViewModel - 假设我有一个可以拥有 1 部或更多部手机的客户。在第一个下拉列表中您可以选择客户,在第二个下拉列表中您可以显示他的所有电话。
    但这不会在我的 Phones 对象上产生循环异常吗?或者我会为我的电话对象创建一个特殊的类?这似乎是很多不必要的代码。

  5. 使用 AutoMapper - 没有使用 AutoMapper 的经验,所以我不知道它有多复杂。

你会投票给哪一个,为什么?

0 投票
1 回答
1438 浏览

javascript - 防止 JavaScript window.getSelection() 循环引用

请参阅此演示(取决于此时仅在 Chrome 中有效的 selectionchange 事件):http: //jsfiddle.net/fyG3H/

选择一些 lorem ipsum 文本,然后聚焦文本输入。在控制台日志中,您将看到有一个 DOMSelection 对象。它有一个 anchorNode 值,HTMLBodyElement而它应该有一个Text

在我尝试对选择对象进行字符串化之前,我不知道为什么会发生这种情况:http: //jsfiddle.net/fyG3H/1/

这给出了以下错误:

未捕获的 TypeError:将循环结构转换为 JSON

您知道如何防止由 window.getSelection() 引起的这种循环引用吗?

编辑

新的演示也适用于其他浏览器,但仍然给出错误的锚节点:http: //jsfiddle.net/fyG3H/5/

并使用 JSON.stringify:http: //jsfiddle.net/fyG3H/6/

Firefox 似乎返回一个空的 {} 而不是抛出错误。

0 投票
1 回答
9322 浏览

python - 避免在 Django 应用程序中导入循环模型

我有一个 django 项目,其中包含 2 个这样的应用程序:

更新以明确功能位置

我在另一个模型上有一个方法,items.models其中获取所有具有一组标签的项目。

结果查询如下:

此方法使用Item模型以及Tag模型,这没关系,因为标签被导入到项目应用程序中。

但是,我想在标签应用程序中访问此方法,但这样做会导致循环导入。

现在我在标签应用程序中获取所有带有一组标签的项目的解决方法是对多对多字段中的反向关系进行设置交集。

这会导致更多查询和一组交集。有没有办法可以Item.objects.filter(tags=t1).filter(tags=t2)...从标签应用程序中的标签模型中执行类似的操作?

我能够通过contenttypesItem模型进行相同的查询来解决这个问题。这是可以接受的,还是有更好的方法来组织这段代码?

0 投票
2 回答
64752 浏览

json - 将循环结构转换为 JSON——有什么方法可以找到它抱怨的字段?

我正在尝试在 Chrome 中对对象进行字符串化(...),并且我不断收到“将循环结构转换为 JSON”消息,尽管事实上(据我所知)不存在这样的结构。

我已经检查了十几次代码,但找不到任何循环引用。除了这个痛苦无用的错误消息之外,有什么方法可以让 Chrome 告诉我它在抱怨什么?