数据劫持--Object.definePropertie

1、什么是Object.definePropertie

Object.defineProperty() 是JavaScript中的一个方法,它用于直接在对象上定义新属性,或者修改一个对象的现有属性,并返回这个对象。

2、Object.defineProperty() 方法接受三个参数:

  1. obj:要定义属性的对象。

  2. prop:要定义或修改的属性的名称或Symbol。

  3. descriptor:将被定义或修改的属性的描述符。

    数据描述符是一个具有值的属性,该值可能是可写的,也可能不是。数据描述符具有以下可选键值:

  • value:该属性的值。默认值为 undefined
  • writable:当且仅当该属性的 value 可以改变时为 true。默认为 false
  • enumerable:当且仅当该属性出现在对象的枚举属性中时为 true。默认为 false
  • configurable:当且仅当该属性的描述符能够被改变以及该属性能够从对应的对象中被删除时为 true。默认为 false
javascript 复制代码
 
function defineProperty() {
    var _obj={};
    var a=1;
    
    Object.defineProperties(_obj,{
        a:{
          get(){
               return  'get' + a ;//var的a
                },
            set(newVal){
                a=newVal
                console.log('set的newVal',newVal)
                }
           }
    })
return _obj
}
var obj = defineProperty();
console.log(obj.a) //走的get方法获取
obj.a=199 // 走的set方法进行修改

数据劫持:把一个对象里的属性进行可配置可写 可枚举,通过get set方法对取值 存取值进行逻辑上的扩展

取一个值的时候 先走get方法 当设置一个值的时候先看set方法的逻辑

vue2采用的就是这种进行响应式处理

相关推荐
sp423 分钟前
通过 RootEncoder 进行安卓直播 RTSP 推流
前端
_院长大人_4 分钟前
构建一个 Vue 基于el-input的磨损区间选择器组件 —— WearRangeSelector
前端·javascript·vue.js
遗憾随她而去.5 分钟前
前端 Vue 虚拟列表(Virtual List),从原理到实战
前端·javascript·vue.js
tangdou3690986555 分钟前
图文并茂手把手教你Claude Code 多智能体 Agent Teams,一人变团队
前端·后端·ai编程
工边页字11 分钟前
图文教学,服务端如何发送(钉钉 +飞书 )机器人通知
java·前端·后端
竹林81813 分钟前
从零集成RainbowKit:我如何解决多链钱包连接中的“幽灵网络”问题
前端·javascript
前端炒粉14 分钟前
Webpack 基础核心内容总结
前端·webpack·node.js
光影少年14 分钟前
前端安全问题?XSS和CSRF?
前端·安全·xss
小小小小宇17 分钟前
RSA攻略
前端
EnoYao17 分钟前
230行代码,零依赖,我用一个文件造了一个AI Agent
前端·人工智能