set,weaket,map,weakemap的基本使用

一:set创建

//在new Set()括号中传递一个数组后,返回的一个去重的数组

const array =  [12,1,23,1,45,87];
const set = new Set(array)
console.log(set)

//set中的方法以及属性
//1. set.add()添加
set.add(10)
set.add(20)
set.add(40)

//2.set.size获取长度
console.log(set.size) 

//3.set.delete删除
set.delete(12)
console.log(set)

//4.set.has()查看set中是否有某个元素
console.log(set.has(1))

//5.set.clear()清除所有元素
set.clear()
console.log(set)

二:weakset的基本使用

// 1.区别一: 只能存放对象类型
// TypeError: Invalid value used in weak set
// weakSet.add(10)


// 2.区别二: 对对象是一个弱引用
let obj = { 
  name: "why"
}

// weakSet.add(obj)

const set = new Set()
// 建立的是强引用
set.add(obj)

// 建立的是弱引用
weakSet.add(obj)

// 3.WeakSet的应用场景
const personSet = new WeakSet()
class Person {
  constructor() {
    personSet.add(this)
  }

  running() {
    if (!personSet.has(this)) {
      throw new Error("不能通过非构造方法创建出来的对象调用running方法")
    }
    console.log("running~", this)
  }
}

let p = new Person()
p.running()

三:map的基本使用

// 1.JavaScript中对象中是不能使用对象来作为key的
const obj1 = { name: "why" }
const obj2 = { name: "kobe" }

const map = new Map([[obj1, "aaa"], [obj2, "bbb"], [2, "ddd"]])

//map中常见的属性以及方法

//1.查看数组的长度
console.log(map.size)

//2.map.set()设置值
map.set("aaa",a);

//3.map.get()获取
var value1 = map.get("aaa");

//4.map.has()判断是否存在某个key
console.log(map.has(obj1));

//5.map.delete()删除某个key
map.delete(obj1);

//6.map.clear()清除全部
map.clear()

四:weakmap的基本使用

const obj = {name: "obj1"}
// 1.WeakMap和Map的区别二:
const map = new Map()
map.set(obj, "aaa")

const weakMap = new WeakMap()
weakMap.set(obj, "aaa")

// 2.区别一: 不能使用基本数据类型
// weakMap.set(1, "ccc")

// 3.常见方法
// get方法
console.log(weakMap.get(obj))

// has方法
console.log(weakMap.has(obj))

// delete方法
console.log(weakMap.delete(obj))
// WeakMap { <items unknown> }
console.log(weakMap)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值