1

如果我创建一个对象,然后设置另一个等于该对象的变量,它只是指向原始对象的指针。有没有办法判断一个变量是否只是一个引用,如果是,确定原始变量名?

例如,如果我想对一个具有引用回原始对象的属性的对象进行 json 编码,它会创建一个无限循环。我想测试一个属性是否是引用,如果是,只需将其标记为引用,而不重写同一个对象。

4

1 回答 1

8
var foo = {'some': 'object'};
var bar = foo;

在此之后,foo与“它们bar都指向同一个对象”完全相同foo但除此之外和之间没有关系bar,所以bar不是对同一个对象的引用foo而是对同一个对象的引用。所以答案是“否”,因为 JavaScript 没有对其他变量的引用。

但是,要检查循环依赖项(这是您在示例中实际需要/想要的),还有其他各种更合适的解决方案可用这个问题:Is there a way to test circular reference in JavaScript?

此外,使用本机 JSON 编码JSON.stringify()已经检查了这一点:

>>> var obj = {};
>>> obj.x = obj;
>>> JSON.stringify(foo)
TypeError: cyclic object value
于 2013-08-31T17:14:31.990 回答