gpt4 book ai didi

javascript - 将值分配给变量和将值存储到变量之间有什么区别

转载 作者:行者123 更新时间:2023-12-02 06:54:13 62 4
gpt4 key购买 nike

我正在阅读一本关于面向对象的 javascript 的书,我发现了这一点:

Reference types do not store the object directly into the variable to which it is assigned, so the object variable in this example doesn’t actually contain the object instance. Instead, it holds a pointer (or reference) to the location in memory where the object exists. This is the primary difference between objects and primitive values, as the primitive is stored directly in the variable.

我的问题是这是什么意思?

“引用类型不会将对象直接存储到分配给它的变量中,因此本示例中的对象变量实际上并不包含对象实例。” ??

enter image description here

最佳答案

在你提供的图片中你可以看到

var object1 = new Object();
var object2 = object1;

在这种情况下,您有两个变量,它们都存储了指向内存中另一个位置的引用(想想指针)。在这个地方存储对象。如果您通过其中一个引用更改对象,并通过另一个引用访问它,您将看到它已更改。

object1.someVariable = 'asdf';
object2.someVariable = 'newValue';
console.log(object1.someVariable); // will give 'newValue'
console.log(object2.someVariable); // will also give 'newValue'

如果你有标量值,它们不会存储引用,它们会存储值本身。

想想另一个例子:

var primitiveString = 'asdf';
var anotherPrimitiveString = primitiveString;

由于两者都存储自己的值,因此您可以更改两个字符串之一,但另一个仍将包含 asdf,因为它们不引用任何内容。

anotherPrimitiveString = 'newValue';
console.log(primitiveString); // will give 'asdf'
console.log(anotherPrimitiveString); // will give 'newValue'

这里有一个 jsfiddle用解释的例子。

关于javascript - 将值分配给变量和将值存储到变量之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038211/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com