javascript - JavaScript 中对象引用如何工作

标签 javascript

我想知道是否有人可以对以下主题进行一些阐述。

我有一个带有很多函数和属性的“重”对象:

var HeavyObject = {
   property1:{}
   property2:1,
   propertyN:false,
   func1:function(){}
   func2:function(){}
   ....
   funcN:function(){}
}

接下来我有一个“轻量级”对象:

var LightWheight =  {
   property1: {
          sub_property:HeavyObject
   },
   property2: {
          sub: {
               sub:{
                   flag:true,
                   heavy:HeavyObject
               }
          }
   }
}

我的问题是我的“LightWeight”对象实际上有多重,因为它有两个对“HeavyObject”的引用?它只保留两个指向“HeavyObject”的指针还是引用的方式不同?

我知道这可能会因 JavaScript 引擎而异,但我想了解总体思路。

非常感谢任何澄清。

最佳答案

Does it only keep two pointers to the "HeavyObject" or is the reference done differently?

它保留两个指向HeavyObject的指针。

如果您想真正测试它,请更改两个指针中的任何一个并检查它们指向的两个指针的值。

如果这样做,您的LightWheight将会变得沉重,

var LightWheight = {
    property1: {
        sub_property: {
            property1: {}
            property2: 1,
            propertyN: false,
            func1: function () {}
            func2: function () {}....
            funcN: function () {}
        }
    },
    property2: {
        sub: {
            sub: {
                flag: true,
                heavy: property1: {}
                property2: 1,
                propertyN: false,
                func1: function () {}
                func2: function () {}....
                funcN: function () {}
            }
        }
    } }

关于javascript - JavaScript 中对象引用如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21773256/

相关文章:

javascript - 变量未在脚本字符串中更新,但它会更新

javascript - 为什么 getPropertyValue 返回一个空字符串而不是元素的样式属性?

javascript - 取消后如何继续事件传播?

javascript - 在 Chrome 上加载网站之前运行 JavaScript 片段

javascript - 在钛中使用 Crypto-JS (commonjs)

javascript - 从对象创建新集合的函数式方法是什么?

javascript - 信用卡信息的正则表达式不应包含字符

JavaScript 打印函数不携带样式表

javascript - webgl中绑定(bind)缓冲区的逻辑是什么?

javascript - jQuery 滑出选项卡