上回介绍闭包概念以及闭包大致运用,这次则介绍实做比较常用闭包的几种模式
上个章节有介绍到,使用不同变数可以让闭包储存的记忆体分开,在透过不同参数可以达成需要重复运行,却需要不同值做呈现、运算的部分,比如下面范例。
function interview(name,office){
return function(){
return console.log(`我的名字是 ${name},我是来应徵 ${office}`)
}
}
const Ryder = interview('Ryder','前端工程师')
Ryder() // 我的名字是Ryder,我是来应徵 前端工程师
const Jason = interview('Jason','专案经理')
Jason() //我的名字是Jason,我是来应徵 专案经理
const Emma = interview('Emma','品管工程师')
Emma() //我的名字是 Emma,我是来 品管工程师
上一章节也有提到,最简单的闭包就是在函示中 return
一个函示,而私有方法 则是 return
出一个物件,再将各种函示包在物件中,这样就可以呼叫物件中各式不同的方法,以达成实做时的各种需求,并且和工厂模式相同,使用不同变数、常数闭包储存的记忆体也会不同,因此可以透过不同参数达成各自独立计算的需求。
function buyGame(initValue){
let money = initValue||0
return {
buyNS(){
money = money - 9000
},
buyPS5(){
money = money - 15000
},
remainMoney(){
return money
}
}
}
const Ryder = buyGame(30000)
Ryder.buyNS()
Ryder.buyNS()
console.log(Ryder.remainMoney()) //Ryder 买了两台 NS 剩 12000
const Emma = buyGame(50000)
Emma.buyNS()
Emma.buyPS5()
console.log(Emma.remainMoney()) //Emma 买了一台 NS 一台 PS5 剩下26000
P.S 这边的 buyNS()
、 buyPS5()
是使用物件函式缩写,未缩写前是 buyNS:fuction()
、 buyPS5: function()
在媒体、娱乐和创意产业中,机器学习与人工智能的使用越来越多。不管是管理数位内容、提供创作者新的灵感等...
学习目标 本文章将会是阅读官方文件Add navigation with routing 内容所做的...
IT business is one of the most famous in the busin...
前言: 说到呼叫 API 的方法,那就一定会提到 Retrofit 这个无人不知,无人不晓的第三方的...
前面我们虽然有讲到除了基本的数值类型资料以外,一共主要会有文字、图片、声音这三大类型,而在数值类型的...