对象---访问器
const user = {
name : '张三',
age : 19
}
console.log(user); // {name: "张三", age: 19}
user.age = 10000;
console.log(user); // {name: "张三", age: 10000}
上述事例中,在对象外可以更改对象的属性的值,但是有时需要对改动的值设置范围,超过范围应该提示错误。
例:年龄应该设置为number类型,且年纪大于10岁小于100岁。
const user = {
data :{
name : '张三',
age : 19
},
set age(value){
// console.log(value)
if(typeof value !== "number" || value > 100 || value <= 10){
throw new Error('请传入符合规定的年纪');
}
this.data.age = value
},
get age(){
return this.data.age
}
}
user.age = 17;
console.log(user.age); // 17
伪造属性
let lesson = {
lists:[
{name : 'js', price : 100},
{name : 'mysql', price : 233},
{name : 'vue.js', price : 199}
],
get total(){
return this.lists.reduce((t,l)=>{
return t + l.price
},0)
}
}
console.log(lesson.total); // 532
使用访问器批量设置属性
let web = {
name : '百度',
url : 'www.baidu.com',
set site(value){
console.log(value.split(','));
[this.name,this.url] = value.split(',');
console.log(this.name,this.url);
},
get site(){
return `${this.name}的网址是${this.url}`
}
}
web.site = '淘宝,www.taobao.com';
console.log(web.site); // 淘宝的网址是www.taobao.com
token的读写处理
let Request = {
set token(content){
localStorage.setItem("token",content);
},
get token(){
let token = localStorage.getItem("token");
if(!token){
alert('请登录');
}
return token;
}
}
Request.token = "0821301489274982";
console.log(Request.token);