<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Object.defineProperty</title> </head> <body> <script> class Test { constructor(data) { for (let key in data) {
// this 不能为data,否则会报错,我也不知道为啥。。。。。。。 Object.defineProperty(this, key, { configurable: false, enumerable: true, set(val) { console.log('设置值事件') data[key] = val; }, get() { console.log('获取值事件') return data[key]; } }) } } } let data = { name: 'sweet boy' } let test = new Test(data); </script> </body> </html>
关于什么是Object.defineProperty(), 请参考下面链接:
在浏览器中打开运行过程为