我正在为Web开发人员阅读Wrox Professinal Javascript一书。在一章中,作者解释了不同的变量类型 - 原始和引用。对于引用类型变量,这写在书中 - "引用值是存储在内存中的对象。与其他语言不同,JavaScript不允许直接访问内存位置,因此不允许直接操作对象的内存空间。当您操作对象时,您实际上正在处理对该对象的引用而不是实际对象本身。出于这个原因,这些值可以通过引用来访问。" 任何人都可以解释它的含义。
答案 0 :(得分:2)
是否可以使用别名取决于数据类型。对象,数组和函数将通过引用处理,并且可以进行别名处理。其他类型基本上是原子的,变量存储值而不是对值的引用。
答案 1 :(得分:0)
参考值是存储在内存中的对象。
这指定Javascript中的对象与引用链接。这意味着,当您执行var obj = {};
时,会在内存中创建一个对象并存储在位置x100006
中。因此obj
将保留此x100006
值,而不是{}
。
与其他语言不同,JavaScript不允许直接访问内存位置,因此不允许直接操作对象的内存空间。
这就是说,因为我知道上面例子中obj
的内存位置,我无法设置变量来手动指向此位置。实际上,你不会知道位置。您只知道有一个指针引用和赋值操作复制该值。因此,当您执行var newObj = obj
时,您将复制引用而不是对象值。您仍然不知道可以播放的内存位置,例如C和C ++。
当你操纵一个对象时,你真的在处理对该对象的引用而不是实际的对象本身。因此,这些值可以通过引用来访问
现在我们知道obj
和newObj
引用了对象而不是实际对象,如果你操纵了这个值,你就会在这个内存位置对对象进行更改。因此,如果我执行obj.x = 'foo'
,这也将反映在newObj
中。