对象属性的动态与静态
- 我们想要把a设置为obj的属性,当a变化时,obj.a也跟着改变
let a = 1;
const obj = {
a
}
a++;
console.log(a, obj.a); // a = 2, obj.a = 1;
-
为什么会这样? 其实是源于 js 值的赋值,对于基本的数据类型是拷贝值的,会赋值一份与当前值相同的数据到一个新的值上,两者是没有任何联系的。
-
如果a是一个引用类型,比如对象会怎样?
const a = {
age : 18
}
const obj = {
a
}
a.age++;
console.log(obj.a.age, a.age); // 19 , 19
- 那如果 a还是基本数据类,但是 a 要动态改变呢? 使用 get方法
let a = 1;
const obj = {
get a(){
return a;
}
}
a++;
console.log(a, obj.a); // 2,2
- get 方法就是一种对象获取动态属性的方法,方法名是什么,属性是什么,obj.b = undefined