Object.defineProperty(a,b,{})(数据劫持)
Object.defineProperty 可以在对象上修改或新增属性,并设置它的属性描述符,然后返回这个对象。
这个方法依次接受:
-
要改变的对象
-
属性名
-
属性描述符
const obj = {}; Object.defineProperty(obj, 'a', { value: '前端西瓜哥' }); console.log(obj.a); // 前端西瓜哥
属性描述符是一个对象,有以下几个配置:
-
value:属性值,默认为 undefined;
-
configurable:属性描述符能否改变,以及属性能否被删除(通过 delete 关键字)。但 false 下,writable 可以单向变成 false,以及 value 可以改为任何值。默认为 false;
-
writable:值能否被修改,默认为 false;
-
get:getter 函数,当属性被读取时,调用该函数并使用它的返回值作为读取值。我们可以通过 this 访问当前对象。get/set 不能和 value/writable 共存,因为它们互相冲突。默认值为 undefined;
-
set<