数据劫持--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采用的就是这种进行响应式处理

相关推荐
我叫Double17 分钟前
GeneralAdmin-3
前端·javascript·vue.js
Charlie_lll19 分钟前
学习Three.js–太阳系星球自转公转
前端·three.js
json{shen:"jing"}20 分钟前
10_自定义事件组件交互
开发语言·前端·javascript
Jinuss20 分钟前
源码分析之React中scheduleUpdateOnFiber调度更新解析
前端·javascript·react.js
一位搞嵌入式的 genius23 分钟前
深入理解 JavaScript 异步编程:从 Event Loop 到 Promise
开发语言·前端·javascript
m0_5649149225 分钟前
Altium Designer,AD如何修改原理图右下角图纸标题栏?如何自定义标题栏?自定义原理图模版的使用方法
java·服务器·前端
方安乐37 分钟前
react笔记之useCallback
前端·笔记·react.js
小二·1 小时前
Python Web 开发进阶实战:AI 伦理审计平台 —— 在 Flask + Vue 中构建算法偏见检测与公平性评估系统
前端·人工智能·python
走粥1 小时前
选项式API与组合式API的区别
开发语言·前端·javascript·vue.js·前端框架
We་ct1 小时前
LeetCode 12. 整数转罗马数字:从逐位实现到规则复用优化
前端·算法·leetcode·typescript