什么是数据劫持?

1.定义:数据劫持,指的是在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果。

2.典型案例:数据双向绑定。vue 2.x 使用的是 Object.defineProperty()(Vue 在 3.x 版本之后改用 Proxy 进行实现)。

3.语法:Object.defineProperty(obj,prop,descriptor)

参数

obj:目标对象

prop:需要定义的属性或方法的名称

descriptor:目标属性所拥有的特性

可供定义的特性列表

value:属性的值

writable:如果为false,属性的值就不能被重写。

get: 一旦目标属性被访问就会调回此方法,并将此方法的运算结果返回用户。

set:一旦目标属性被赋值,就会调回此方法。

configurable: 如果为false,则任何尝试删除目标属性或修改属性性以下特性(writable, configurable, enumerable)的行为将被无效化。

enumerable: 是否能在for...in循环中遍历出来或在Object.keys中列举出来。

4.代码实现

你可能感兴趣的:(什么是数据劫持?)