当前位置: 首页 > news >正文

前端面试宝典---vue原理

vue的Observer简化版

class Observer {constructor(value) {if (!value || typeof value !== 'object') returnthis.walk(value) // 对对象的所有属性进行遍历并定义响应式}walk (obj) {Object.keys(obj).forEach(key => defineReactive(obj, key, obj[key]))}
}
// 定义核心方法 defineReactive
function defineReactive (target, key, value) {new Observer(value) // 如果值还是对象,则继续对其子属性进行观察Object.defineProperty(target, key, {enumerable: true,configurable: true,get: function reactiveGetter () {return value},set: function reactiveSetter (newVal) {if (newVal === value) returnvalue = newValnew Observer(value) // 新值如果是对象,也需要对其进行观察}})
}let observer = {name: 'observer',age: 18,tempObj: {n: 1,m: 2}
}new Observer(observer)console.dir(observer)

在这里插入图片描述

相关文章:

  • arduino显示数码管1~9
  • 如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题
  • 【SwitchyOmega安装教程】
  • 案例速成GO+redis 个人笔记
  • Llama factory如何全参数微调 Qwen2.5-7B-Instruct 模型并导入Ollama推理(详细版)
  • spark总结
  • uniapp开发04-scroll-view组件的简单案例
  • 启动命令汇总(Redis / Kafka / Flume / Spark)
  • DIFY 浅尝 - Dify + Ollama 抓取BBC新闻
  • Java学习手册:常用的内置工具类包
  • 云原生--核心组件-容器篇-3-Docker三大核心之--镜像
  • elk中kibana一直处于可用和降级之间且es群集状态并没有问题的解决方法
  • 从 Vue 到 React:React 合成事件
  • 使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第一部分
  • Linux之netlink(2)libnl使用介绍(1)
  • Redis 数据类型全览:特性、场景与操作实例
  • 【Hive入门】Hive动态分区与静态分区:使用场景与性能对比完全指南
  • 游戏引擎学习第245天:wglChoosePixelFormatARB
  • 写入cache时数据格式错误产生的ERRO导致整个测试框架无法运行
  • PID程序实现
  • 《奇袭白虎团》原型人物之一赵顺合辞世,享年95岁
  • 商务部:4月份以来的出口总体延续平稳增长态势
  • 国家发改委回应美加征关税:典型的单边主义霸凌做法
  • 伊朗国防部发言人:发生爆炸的港口无进出口军用物资
  • 葛兰西:“生活就是抵抗”
  • 洗冤录·巴县档案|道咸年间一起家暴案