js中原始类型和对象引用

在 JavaScript 中,除了原始类型(例如字符串、数字、布尔值、null 和 undefined)外,其他所有值都是对象。当我们在 Set 中添加一个元素时,该元素可以是原始类型或对象引用。

对象引用是指变量中存储的指向对象内存地址的指针。当我们将一个对象赋值给变量时,实际上是将对象的引用赋值给变量,而非对象本身。例如:

const obj1 = { name: 'Alice' }
const obj2 = obj1

在上面的代码中,obj1obj2 都是指向同一个对象的引用。因此,如果我们将 obj1obj2 添加到 Set 中,实际上是将对象的引用添加到 Set 中,而非对象本身。

需要注意的是,Set 中的唯一性是基于值的,而非引用的。这意味着,如果我们将两个不同的对象引用添加到 Set 中,它们在 Set 中仍然被视为不同的值,即使它们具有相同的属性和值。例如:

const obj1 = { name: 'Alice' }
const obj2 = { name: 'Alice' }

const set = new Set()
set.add(obj1)
set.add(obj2)

console.log(set.size) // 2

在上面的代码中,我们将 obj1obj2 添加到 Set 中,它们虽然具有相同的属性和值,但由于它们是不同的对象引用,因此它们在 Set 中被视为不同的值,Set 的大小为 2。

你可能感兴趣的:(javascript,开发语言,ecmascript)