js中原始类型和对象引用
在 JavaScript 中,除了原始类型(例如字符串、数字、布尔值、null 和 undefined)外,其他所有值都是对象。当我们在 Set 中添加一个元素时,该元素可以是原始类型或对象引用。
对象引用是指变量中存储的指向对象内存地址的指针。当我们将一个对象赋值给变量时,实际上是将对象的引用赋值给变量,而非对象本身。例如:
const obj1 = { name: 'Alice' }
const obj2 = obj1
在上面的代码中,obj1
和 obj2
都是指向同一个对象的引用。因此,如果我们将 obj1
或 obj2
添加到 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
在上面的代码中,我们将 obj1
和 obj2
添加到 Set 中,它们虽然具有相同的属性和值,但由于它们是不同的对象引用,因此它们在 Set 中被视为不同的值,Set 的大小为 2。