当前位置: 首页 > news >正文

营销网站价格seo策划

营销网站价格,seo策划,新疆网站设计,app导航网站源码Set和weakSet的用法和区别 1.Set 和weakSet 它是类似于数组,且成员值都是唯一的, 2.Set有 add has delete clear size keys values forEach entries 3.weakSet 有add has delete 4.WeakSet中只能存放对象类型,不能存放基本类型 5.WeakSet它是…

Set和weakSet的用法和区别

1.Set 和weakSet 它是类似于数组,且成员值都是唯一的,
2.Set有 add has delete clear size keys values forEach entries
3.weakSet 有add has delete
4.WeakSet中只能存放对象类型,不能存放基本类型
5.WeakSet它是弱引用,在weakSet里面引用了对象,垃圾回收机制不会考虑该对象的引用,若外面已经没有了该对象的引用,则垃圾回收机制会回收该对象,weakSet内部引用的该对象也会自动消失,所以他内部的对象不适合被引用,也不允许便利,
6.WeakSet在初始化的时候是不能赋值的,必须通过add赋值
7.WeakSet只有add has delete 没有size clear forEach不能使用for of进行便利。

// 普通的对象 如果把一个对象放入到数组中,那么只要这个数组存在,那么这个对象也就存在,即使没有其他对该对象的引用。
let john = { name: "John" };
let array = [ john ];
john = null; // 覆盖引用
console.log(array[0]) // 还是可以访问// Set,如果我们使用对象作为常规 Map 的键,那么当 Map 存在时,该对象也将存在。它会占用内存,并且应该不会被(垃圾回收机制)回收
const set = new Set()
let obj = {name:100}
set.add(obj)
obj = null
console.log(set.size)  // 1
// 它是伪数组 通过 ...变成数组对象  
// 他不会被垃圾回收机制回收,依旧可以访问获取 
console.log([...set][0]); // weakSet
const weakSet = new WeakSet()
let objWeak = {name:234}
let mary = { name: "Mary" };weakSet.add(objWeak)
weakSet.add(mary)
console.log(weakSet.has(objWeak)); // true
objWeak = null 
//若外面已经没有了该对象的引用,则垃圾回收机制会回收该对象,weakSet内部引用的该对象也会自动消失
console.log(weakSet.has(objWeak)); // false 将被自动清理(即自动清除其中已失效的值objWeak)

Map和weakMap

1.Map : set get has delete clear size keys values forEach entries
2.Map是一组键直对的数据局结构,我们知道普通的对象,他的key只能是字符串类型的,但是Map他的key不限制于字符串,可以是函数 可以是对象包含任何类型
entries: 键直对所组成的数组
3.数组转map 传二维数组
4.weakMap:也是若引用,只接受对象类型的数据作为键名weakMap是对于键名引用的弱引用,不是键值指向的对象,键值的引用依然存在,
5.他有 get set has delete属性他也不能被遍历

//普通对象:
let [a, b] = [{}, {}]
let obj = {[a]: 1,[b]: 2,
}
console.log(obj.a); // undefiend  
console.log(obj.b); // undefiend   普通对象他的key是没法获取的,
// 最后是这样转换了 [object Object]的字符串,且下面的会覆盖上面的 {[object Object] : 2}
console.log(Object.prototype.toString.call(a)); // Map
const map = new Map([['a', 1], ['b', 2], ['c', 3]])
map.get('a') // 1
map.has('a') // true// 获取key和value的数组
for (let i of map.entries()) {console.log(i);// ['a',1]// ['b',2]// ['c',3]
}weakMap的使用方式 :比如获取dom的点击事件在不用weakMap之前:
```javascript
var count = 0, button = document.getElementById('btn');
function buttonClick() {count += 1console.log(count);
}
button.addEventListener('click', buttonClick) 
// 如果这个点击事件用完之后,或者离开当前页面需要销毁  我们需要
button.removeEventListener('click', buttonClick)
button = null 
count = null
// 这样的销毁的方法比较不友好,而且当变量多了,很容易遗漏

使用weakMap之后

var button = document.getElementById('btn'), wm = new WeakMap();
wm.set(button, { count: 0 })
function buttonClick() {let data = wm.get(button)data.count += 1console.log(data.count);
}
button.addEventListener('click', buttonClick) 
button.removeEventListener('click', buttonClick)
// 这个时候不需要额外的去关注状态
button = null 

总结
WeakMap 是类似于 Map 的集合,它仅允许对象作为键,并且一旦通过其他方式无法访问它们,便会将它们与其关联值一同删除。

WeakSet 是类似于 Set 的集合,它仅存储对象,并且一旦通过其他方式无法访问它们,便会将其删除。

它们的主要优点是它们对对象是弱引用,所以被它们引用的对象很容易地被垃圾收集器移除。

WeakMap 和 WeakSet 被用作“主要”对象存储之外的“辅助”数据结构。一旦将对象从主存储器中删除,如果该对象仅被用作 WeakMap 或 WeakSet 的键,那么它将被自动清除。

http://www.yidumall.com/news/82682.html

相关文章:

  • 个人网站模板制作教程北京网站维护公司
  • seo的基本步骤四个seo外链平台热狗
  • 包头北京网站建设福州网站排名
  • 网站建设与设计ppt模板小红书搜索关键词排名
  • 网站建设制作视频商丘网站优化公司
  • 旅游网站建设方案书石家庄seo排名公司
  • 大航母网站建设案例域名注册信息
  • 建一个分类信息网站四川整站优化关键词排名
  • 做网站就找喇叭人免费百度广告怎么投放
  • 怎么用.net做网站品牌运营
  • 真人菠菜网站开发制作找个网站
  • 区域性网站优化太原网络推广公司哪家好
  • php网站后台搭建品牌营销经典案例
  • 龙岗英文网站建设网站seo优化软件
  • 徐州哪家公司做网站水平好如何宣传网站
  • 美国日本韩国欧洲化妆品特点南宁百度seo排名优化软件
  • 网站建设工资多少钱微信推广方法
  • 什么是网站seo叶涛网站推广优化
  • 全网营销推广是什么seo怎么优化方法
  • angular做的网站seo和sem
  • wordpress扩展主题核心文件上海百度关键词优化公司
  • b2b2c o2o商城系统武汉seo诊断
  • 用java做网站界面app推广代理
  • 网站开发 设计制作合同做网站
  • 微信优惠群怎么做网站中央电视台新闻联播广告价格
  • 上海网站建设 网站开发成品网站货源1688在线
  • 中小型网站服务器搭建方案推广网站公司
  • 上海2023年建设市场放假时间石家庄百度快照优化排名
  • 惠州品牌网站建设公司哪里有网站关键词优化排名推荐
  • 微网站页面菜单栏关键词搜索引擎排名查询