沙箱模式
-
利用了 函数内 "间接" 的返回了一个函数
-
外部函数 返回了 一个对象, 这个对象内书写多个函数
function outer() {
// 1. 放置一些外部函数的私有变量
let a = 0
let b = 999
// 2. 对象内部放置若干个 函数
const obj = {
getA: function () {
return a
},
setA: function (val) {
a = val
},
getB() {
return b
},
setB(val) {
b = val
}
}
// 3. 将对象返回到函数外
return obj
}
// 得到 函数内部的对象, 这个对象内部有多个操作函数
const res = outer()
// 得到函数内部的私有变量 a
let winA = res.getA()
// 修改函数内部的私有变量 a
res.setA(winA + 1)
console.log(res.getA())
沙箱模式语法糖
语法糖: 在不影响功能的情况下, 给我们提供了一些更简单的操作方式
// 语法糖版, 其实就是利用 getter 和 setter 帮助我们简化了一些操作与代码
function outter() {
let a = 1
return {
get a() {
return a
},
set a(val) {
a = val
}
}
}
const res = outter()
console.log(res.a)
res.a = 999
console.log(res.a)
// 普通版
function outter() {
let a = 1
return {
getA () {
return a
},
setA (val) {
a = val
}
}
}
const res = outter()
res.setA(99)
console.log(res.getA()) // 99