js-day22-沙箱模式

68 阅读1分钟

沙箱模式,包含私有代码的,需要访问和修改私有的代码,必须通过提供专有的方式才能实现

function createSandBox(){
    // 内部的私有代码
    let username = '张三'
    // 如果在外边需要获取和修改这个数据,需要提供专门的方法
    return {
        getData(){
            return username
        },
        setData(value){
            username = value
        }
    }
}
const obj = createSandBox()
console.log(obj.getData())
obj.setData('王成')
console.log(obj.getData())

对沙箱模式进行改造

function createSandBox(){
    let username = '张三'
    return {
        get user(){
            return username
        },
        set user(value){
            username = value
        }
    }
}
const obj = createSandBox()
obj.user = '王成'
console.log(obj.user)

console.log(obj)

object对象

  • 除了正常的赋值以外,还提供了两个专门的方法用于获取属性和设置属性值的方法
  • 方法
    • get() getter 获取器
      • 当获取对象的属性的时候,get函数会被自动调用
    • set() setter 设置器
      • 当设置对象的属性值的时候,set函数会被自动调用
 // 之前设置属性
 const obj = {
     username: '王成',
 }
 // 获取属性
 console.log(obj.username)
 // 设置属性
 obj['age'] = 18
 // 修改属性
 // obj['username'] = '张三'
 console.log(obj)
let _user = '张三'

  const obj = {
      // 获取属性
      get username(){
          return _user
      },
      // 设置属性值
      set username(value){
          document.querySelector('h1').innerHTML = value + ':喜欢学习和美食!'
          _user = value
      }
  }
  // console.log(obj.username)

  // obj.username = '王成'

  // console.log(obj)

  // obj.username = '王成'

  // document.querySelector('h1').innerHTML = obj.username + ':喜欢学习和美食!'

  // obj.username = '崔傑瑜'