沙箱模式,包含私有代码的,需要访问和修改私有的代码,必须通过提供专有的方式才能实现
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 = '崔傑瑜'