javascript - 如何判断一个 JavaScript 变量是否是对另一个变量的引用

标签 javascript

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

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

最佳答案

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

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

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

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

>>> var obj = {};
>>> obj.x = obj;
>>> JSON.stringify(foo)
TypeError: cyclic object value

关于javascript - 如何判断一个 JavaScript 变量是否是对另一个变量的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18550719/

相关文章:

javascript - ServiceWorker 中的 SharedWorker 端口等效吗?

javascript - Bootstrap typeahead 在 MVC 5 中不起作用

javascript - 是否可以通过对象定义找到实际的函数源代码?

javascript - 后台平台: what is the objects life cycle (or db trigger action)

JavaScript 数组的长度方法

javascript - 使用 ajax 强制注销时数据库表未更新

javascript - 通过javascript在选择框中按下箭头键

javascript - 表单 Jquery 函数

javascript - 拦截 process.stdout.write 调用

javascript 对象字面量,将同一字面量内的对象值组合在一起