get是获得属性的一种方法。
set是设置属性的一种方法。
普通对象、class类、Object.defineProperty 都可以使用
-
普通对象
const obj = { a:1, b:2, get c(){ console.log('获取c属性的时候被监听了') return c + '$' }, set c(v){ console.log('设置c属性的时候被监听了') c = v } } obj.c = 1; // 设置c属性的时候被监听了 console.log(obj.c) // 获取c属性的时候被监听了 // 1$
-
class类
class A{ constructor(){ this.a = 1; this.b = 2; } get c(){ console.log('获取c属性的时候被监听了') return this.a } set c(v){ console.log('设置c属性的时候被监听了') this.a = v + '$'; } } let obj = new A() console.log(obj.c); // 获取c属性的时候被监听了 // 1 obj.c = 5;// 设置c属性的时候被监听了 console.log(obj.c);// 获取c属性的时候被监听了 // 5$
-
Object.defineProperty
const obj = { a:1, b:2 } Object.defineProperty(obj,'c',{ get(){ console.log('获取c属性的时候被监听了') return c }, set(v){ console.log('设置c属性的时候被监听了') c = v+'$'; } }) obj.c = 5; // 设置c属性的时候被监听了 console.log(obj.c);// 获取c属性的时候被监听了 // 5$