如何判断一个JavaScript变量是否是对另一个变量的引用
How to tell if a JavaScript variable is a reference to another variable
如果我创建一个对象,然后将另一个变量设置为等于该对象,那么它只是指向原始对象的指针。有没有办法判断一个变量是否只是一个引用,如果是,确定原始变量名?
例如,如果我想对一个具有引用回原始对象的属性的对象进行json编码,它会创建一个无限循环。我想测试一个属性是否是引用,如果是,就把它标记为引用,而不重写同一个对象。
var foo = {'some': 'object'};
var bar = foo;
在此之后,foo
和bar
与"它们都指向同一对象"中的完全相同。但除此之外,foo
和bar
之间没有关系,因此bar
不是对foo
的引用,而是对同一对象的引用。因此,答案是"否",因为JavaScript没有对其他变量的引用。
然而,为了检查循环依赖性(这正是您在示例中实际需要/想要的),还有其他各种更合适的解决方案可供选择:有没有一种方法可以测试JavaScript中的循环引用?
此外,使用JSON.stringify()
的本地JSON编码已经检查了以下内容:
>>> var obj = {};
>>> obj.x = obj;
>>> JSON.stringify(foo)
TypeError: cyclic object value
相关文章:
- 如何测试变量是否只有字母而不是abc1.关于验证电子邮件
- 检查全局变量是否存在的正确方法是什么
- 检查变量是否大于某物,但不是未定义的
- 如何在 Javascript 中检查变量是否是数组(noesis.Javascript)嵌入在C#中
- 如何安全地确定变量是否是多个字符的字符串
- 对角度模块使用单个全局变量是否是一种反模式
- 这是检查变量是否被定义的最佳方法,而不是 null 并等于 “” 或其他任何内容
- 如何判断一个JavaScript变量是否是对另一个变量的引用
- 如何检查java脚本中的变量是否是特定对象的类型
- 我如何检查一个变量是否不是null,也不是数字
- 我该如何检查一个变量是否没有定义,抛出一个错误,告诉我是哪个变量
- 为什么使用数组表示法而不是点表示法来检查变量是否存在
- 检查变量是否为false,而不是true或未定义
- 如何检查变量是否是函数Number()或函数String() js的类型
- 是否有可能判断变量是否是刚刚用new创建的对象并获取对象类型
- 如何检查变量是否是一个初始化的DataTable
- 如何检查变量是否是javascript中的类型化数组
- 检查变量是否是真正的 jqXHR 的任何方法
- 如何检查一个变量是否是ES6的类声明
- 如何判断一个javascript变量是否是一个函数