NodeJS设计模式( 二 )

一、Map和Set集合

const profiles = new Map()
profiles.set( 'twitter','@adalovelance')
profiles.set( 'facebook','adalovelance')
profiles.seize
profiles.has('twitter')
profiles.get('twitter')
profiles.has('youtube')//false
profiles.delete('facebook')
for (const entry of profiles){
	console.log(entry)
}

Map真正有趣的地方是使用函数和对象作为key,而这时使用普通对象不可能完成的事情,因为对象的所有key都会自动转换为字符串。该功能带来了新的可能性。例如,我们可以利用此功能建立一个微测试框架:

const tests =  new Map()
tests.set(()=>2+2,4)
tests.set(()=>2*2,4)
tests.set(()=>2/2,1)
for(const entry of tests){
	console.log((entry[0]()===entry[1])?'PASS':'FAIL')
}

set原型 可以用于轻松构建集合,一个所有值都唯一的列表

const s = new Set([0,1,2,3])
s.add(3)//will not be added
s.delete(0)
s.has(0)
for(const entry of s){
	console.log(entry)
}

二、WeakMap和WeakSet集合

同Map的差异
1、没办法迭代所有条目,只允许对象作为主键。
2、当它内部只剩下引用时,对象作为主键可以用来进行垃圾回收。当我们存储一个对象关联的元数据,而该对象在应用程序的正常生命周期可能被删除时,这个功能将非常有用

const s = new Set([0,1,2,3])
let obj ={}
const map = new WeakMap()
map.set(obj,{key:"some_value"})
console.log(map.get(obj))
obj = undefined// 被垃圾回收了

和WeakMap类似,WeakSe是Set的弱版本:它暴露出和Set相同的接口,但它只允许存储对象且不能重复
WeakSet允许内部对象在只剩下引用的时候被垃圾回收:

let obj1 = {key: "val1"}
let obj2 = {key: "val2"}
const set = new WeakSet([obj1,obj2])
console.log(set.has(obj1))
obj1 = undefined// obj1 被移除
console.log(set.has(obj1))//false

三、模板字面量

ES6提供更强大的语法来定义字符串:模板字面量。这个语法使用反引号(`)作为分隔符
好处:
1、允许字符串中使用${experssion}插入变量或表达式
2、单个字符串可以轻松写在多行

const name= "Leonardo"
const interests = ["arts","architecture","science","music","mathematics"]
const birth = { year:1452, place: 'Florence'}
const text = `${name} was an Italian polymath
			  interested in many topics such as
			  ${interests.join(',')}. He was born 
			  in ${birth.year} in ${birth.place}.`
const.log(text)
Node.js设计模式是一本详细解释了Node.js底层知识和设计方法的书籍。Node.js作为一个基于事件驱动、非阻塞I/O模型的JavaScript运行环境,具有许多独特的设计模式和最佳实践。这本书提供了关于如何使用这些设计模式来构建可扩展和高性能的Node.js应用程序的指导。 在Node.js中,装饰模式是一种通过继承的方式为一个基类对象扩展功能的方法。通过继承基类对象,我们可以在子类中添加新的功能以扩展原有功能。这种模式可以使得代码更具灵活性和可维护性,同时也遵循了面向对象的设计原则。 举个例子来说明装饰模式在Node.js中的应用。假设我们有一个基类对象代表一颗圣诞树,一开始它没有任何装饰品。然后,我们可以创建一个装饰器类来继承基类对象,并在子类中添加额外的装饰品功能。通过这种方式,我们可以动态地向圣诞树添加不同的装饰品,而不需要修改基类对象的代码。 在Node.js中实现装饰模式的一种方式是使用util模块的inherits方法来实现继承。我们可以创建一个装饰器类,并在该类中继承基类对象。然后,我们可以在装饰器类中重写基类对象的方法,并在方法中添加额外的功能。 总结起来,Node.js设计模式是一本详细解释了Node.js底层知识和设计方法的书籍。而装饰模式则是一种通过继承的方式为一个基类对象扩展功能的方法,在Node.js中可以使用util模块的inherits方法来实现继承。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [nodejs设计模式](https://download.youkuaiyun.com/download/ariflight/10460182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [《Node.js开发实战详解》学习笔记](https://blog.youkuaiyun.com/diankan7855/article/details/101768936)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [NodeJS设计模式()](https://blog.youkuaiyun.com/It_sharp/article/details/89605464)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值