沙箱模式

83 阅读1分钟

沙箱模式

  • 利用了 函数内 "间接" 的返回了一个函数

  • 外部函数 返回了 一个对象, 这个对象内书写多个函数

        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