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

黄岛做网站哪家好公司网站规划案例

黄岛做网站哪家好,公司网站规划案例,平面设计教学视频,如何做公司网站简介文章目录 前言✅ 举例说明✅ 在 Vue 响应式系统中的鲁棒性✅ 总结一句话:✅ 1. **忽略非对象类型(null、number、boolean 等)**原因: ✅ 2. **避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)**原因…

文章目录

  • 前言
    • ✅ 举例说明
    • ✅ 在 Vue 响应式系统中的鲁棒性
    • ✅ 总结一句话:
    • ✅ 1. **忽略非对象类型(null、number、boolean 等)**
      • 原因:
    • ✅ 2. **避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)**
      • 原因:
    • ✅ 3. **防止循环引用死递归:递归时也判断是否已经代理**
    • ✅ 4. **兼容 `toRaw()` 还原原始对象**
    • 🧩 最终鲁棒版 `reactive.ts` 核心结构如下:
    • ✅ 附加:`isObject` 工具函数
    • ✅ 小结


前言

“鲁棒性”(Robustness) 是一个软件工程术语,意思是:

程序在面对异常情况、边界条件或不完美输入时,仍能稳定、正确运行的能力。


✅ 举例说明

情况鲁棒性体现
传入已经是代理的对象不重复代理,直接返回
出现循环引用不死递归,正确引用自己
用户传入 null/undefined/非对象不报错,直接返回原值或做容错处理
属性不存在返回 undefined 而不是抛异常

✅ 在 Vue 响应式系统中的鲁棒性

你的 reactive() 方法如果没有处理好这些情况:

  • 传入已经代理过的对象又再次代理,会导致多层代理或性能浪费;
  • 遇到循环引用没做缓存,会死栈;
  • getset 时没做 null 检查,会报错。

这些都说明鲁棒性不够。


✅ 总结一句话:

鲁棒性 = 出错时不崩溃,边缘条件下仍合理运行。

一个高质量的框架/库,必须具备良好的鲁棒性。

下面在现有 reactive() 实现上,增加 4 项关键的鲁棒性增强,确保 mini-vue 面对各种异常/边界情况都能稳定运行。


✅ 1. 忽略非对象类型(null、number、boolean 等)

if (!isObject(target)) {return target
}

原因:

非对象是不能被 Proxy 代理的,否则直接报错。


✅ 2. 避免重复代理(支持 isReactive() 和 WeakMap 缓存双保险)

if ((target as any)[ReactiveFlags.IS_REACTIVE]) {return target // 已是响应式,直接返回
}if (reactiveMap.has(target)) {return reactiveMap.get(target)
}

原因:

即使外部不小心再次调用 reactive(),也应返回已生成的代理对象。


✅ 3. 防止循环引用死递归:递归时也判断是否已经代理

if (isObject(result)) {return reactive(result)
}

需要进一步增强为:

if (isObject(result)) {// 优先使用 WeakMap 缓存中的代理const existingProxy = reactiveMap.get(result)return existingProxy ? existingProxy : reactive(result)
}

✅ 4. 兼容 toRaw() 还原原始对象

你已有:

if (key === ReactiveFlags.RAW) {return target
}

再配合:

export function toRaw(value: any): any {return value && (value as any)[ReactiveFlags.RAW] || value
}

这样你可以任意判断、恢复响应式对象。


🧩 最终鲁棒版 reactive.ts 核心结构如下:

export function reactive<T extends object>(target: T): T {if (!isObject(target)) {return target}if ((target as any)[ReactiveFlags.IS_REACTIVE]) {return target}if (reactiveMap.has(target)) {return reactiveMap.get(target)}const proxy = new Proxy(target, {get(target, key, receiver) {if (key === ReactiveFlags.IS_REACTIVE) return trueif (key === ReactiveFlags.RAW) return targetconst result = Reflect.get(target, key, receiver)track(target, key)if (isObject(result)) {const existingProxy = reactiveMap.get(result)return existingProxy ? existingProxy : reactive(result)}return result},set(target, key, value, receiver) {const result = Reflect.set(target, key, value, receiver)trigger(target, key)return result}})reactiveMap.set(target, proxy)return proxy
}

✅ 附加:isObject 工具函数

function isObject(val: any): val is object {return val !== null && typeof val === 'object'
}

✅ 小结

防御策略解决的问题
非对象返回原值防止 Proxy 报错
重复代理检测避免多层代理 / 死递归
IS_REACTIVE 检查允许 isReactive() 判定状态
RAW 支持toRaw() 安全还原原始对象
WeakMap 缓存优化性能 + 支持循环引用


文章转载自:

http://g2oKU4CL.pqyms.cn
http://j8zFQu8c.pqyms.cn
http://0vyxZhsg.pqyms.cn
http://RgwEs2pv.pqyms.cn
http://1zgTzfyC.pqyms.cn
http://eL0dIJw7.pqyms.cn
http://s68gYmMv.pqyms.cn
http://GnafDtYs.pqyms.cn
http://dinWKkZ2.pqyms.cn
http://jJGdWUQ8.pqyms.cn
http://xU6crHkf.pqyms.cn
http://lbMcfdGJ.pqyms.cn
http://5qkAaeEc.pqyms.cn
http://3vO7NqkU.pqyms.cn
http://D7BRZVQG.pqyms.cn
http://oPAWUgVP.pqyms.cn
http://Okv0QtIh.pqyms.cn
http://cJYDqAUh.pqyms.cn
http://lCpnfet4.pqyms.cn
http://JzLLoFLN.pqyms.cn
http://WP1tBcb7.pqyms.cn
http://TuAubkqf.pqyms.cn
http://dA0qAtYq.pqyms.cn
http://neKx8OZv.pqyms.cn
http://IyuIR4tk.pqyms.cn
http://XQnuFhJO.pqyms.cn
http://fjCTN6zs.pqyms.cn
http://89Myg7Fk.pqyms.cn
http://tKtQdDpa.pqyms.cn
http://ICp0mxqh.pqyms.cn
http://www.dtcms.com/wzjs/745745.html

相关文章:

  • 建设银行临夏分行网站asp.net mvc 网站开发
  • 网站建设基础心得邯郸市出租房屋信息网
  • axrue怎么做网站的原型图网络营销策划步骤
  • 图片在线制作网站yellow的视频播放
  • 建立网站外链常用的渠道有哪些wordpress连接微博源码
  • 国内设计网站公司1771wan网页游戏
  • 网站建设专家如何选汕头网站推广排名
  • 西安网站建设服务商推广普通话奋进新征程宣传语
  • 网站搭建公司排行学做网站论坛插件
  • 蓝牙音箱东莞网站建设直播平台开发多少钱
  • 汽车行业网站建设方案达州市住房和建设厅网站
  • 虚拟主机网站怎么上传文件遨游建站
  • 潍坊市房屋和城乡建设局网站网站开发的收入
  • 建设网站如何加入搜索网站开发vs2015是什么
  • 网站建设全屏广州网站建设全包
  • 网站服务器有哪些种类给个网站可以在线
  • 网站建设与维护 出题狮山公司网站建设
  • 门户网站改造方案阿里巴巴每平每屋设计家官网
  • 如何做网站赚钱6毕业生就业推荐表模板网站开发
  • 商水县建设局网站网站构造下拉列表怎么做
  • 统计网站建设程序网站开发基本要求
  • 无域名网站 能否被百度天津微信网站
  • 苏宁易购的网站建设企业网站建设任务书
  • wordpress建站图片效果网站建设哪家合适
  • 求免费的那种网站有哪些海口专业网站制作策划
  • 厦门网站建设定制多少钱如何查看网站是谁建设的
  • jq效果较多的网站有些电影网站是怎么做的
  • 美乐乐 网站建设网站建设要会英语吗
  • 做房产抵押网站需要什么手续费广州中国建设银行网站首页
  • 知名品牌网站有哪些软文网站开发