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

网店代运营店铺推推蛙贴吧优化

网店代运营店铺,推推蛙贴吧优化,上海十大国企排名,哪家做网站做得好提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实例是什么?二、new Prxoy三、实现代码1.引入代码2.读入数据 总结 前言 receiver不是为解决get陷阱而生,而是为解决Proxy中的this绑…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、实例是什么?
  • 二、new Prxoy
  • 三、实现代码
    • 1.引入代码
    • 2.读入数据
  • 总结


前言

receiver不是为解决get陷阱而生,而是为解决Proxy中的this绑定问题而存在的机制。
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、实例是什么?

在JavaScript中,实例是通过构造函数或类创建的具体对象,例如:

  1. new Proxy() 创建了一个Proxy实例

  2. obj 就是reactive函数返回的Proxy实例

  3. 每次调用reactive()都会创建一个新的独立实例

在这里插入图片描述

二、new Prxoy

// 创建Proxy实例
const reactive = fn => {// new Proxy()会创建一个Proxy实例return new Proxy(fn, {get (target, key, receiver) {// 避免打印导致递归if (key === 'name' || key === 'age') {console.log('访问属性:', target, key, receiver)}return target[key]},set (target, key, receiver) {console.log('set')}})
}// obj是reactive函数返回的Proxy实例
const obj = reactive({name: 'zhangsan',age: 18
})

从运行结果可以看出:

实例特点:

  1. 当访问obj.name时,触发了Proxy的get陷阱,console.log显示:
  • target是原始对象{name: ‘zhangsan’, age: 18}
  • key是被访问的属性名’name’
  • receiver是Proxy实例本身
  1. Proxy实例的特殊行为:
  • 拦截了对属性的访问(get)和修改(set)
  • 保持了原始对象(target)和代理对象(receiver)的区分

3.实例的核心概念:

  • 是类的具体实现
  • 拥有独立的内存空间
  • 可以调用类或构造函数定义的方法

三、实现代码

1.引入代码

代码如下(示例):

// 创建Proxy实例
const reactive = fn => {// new Proxy()会创建一个Proxy实例return new Proxy(fn, {// get陷阱:拦截属性访问// target: 被代理的原始对象// key: 被访问的属性名 // receiver: 最初被调用的对象(通常是Proxy实例),解决this绑定问题get (target, key, receiver) {// 避免打印导致递归if (key === 'name' || key === 'age') {console.log('访问属性:', key)console.log('get陷阱触发')}// Reflect.get使用receiver确保正确的this绑定return Reflect.get(target, key, receiver)},set (target, key, receiver) {console.log('set')}})
}// obj是reactive函数返回的Proxy实例
const obj = reactive({name: 'zhangsan',age: 18
})// 演示receiver的作用
const child = { __proto__: obj, childProp: 'child' }
console.log('obj.name',obj.name) // receiver是obj
console.log('child.name',child.name) // receiver是child
obj.name = 'lisi'

2.读入数据

从运行结果可以看出Proxy get陷阱和receiver的核心特点:

get陷阱:
是Proxy的核心拦截器,在属性访问时触发

可以自定义属性访问行为(如添加日志)

必须返回属性值(这里通过Reflect.get实现)

receiver的作用:
确保this正确绑定(如继承场景)

在child.name访问时,receiver指向child而非obj

通过Reflect.get(target, key, receiver)保持原型链正确

输出结果分析:
两次"get陷阱触发"分别对应obj.name和child.name访问

"set"日志说明对obj.name的赋值操作被拦截

关键结论:receiver不是为解决get陷阱而生,而是为解决Proxy中的this绑定问题而存在的机制。


总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了reactive的使用,其中主要学会区分get陷阱receiver的作用

http://www.dtcms.com/wzjs/553613.html

相关文章:

  • 畅言wordpress插件网站子页面如何做seo
  • 购物网站开发大专软件技术好就业吗
  • 小型电商网站模板网站设计与制作教程
  • 中国空间站简介100字百度竞价推广代理
  • 有哪些教做蛋糕的网站wordpress cdn国内插件
  • 电子商务网站建设解决方案建设网站采用的网络技术
  • 提高网站流量圣诞网站怎么做
  • 佛山专业的做网站oppo游戏中心官网
  • 企业网站建设中图片优化的方法携程网站建设评价
  • php网站培训阿里云 一键wordpress
  • 厦门网站设计排行网站建设的公司工作室
  • 森东网站建设所有域名后缀参考大全
  • 新的购物网站怎么做流量分析做网站的市场细分
  • 模板网站有哪些在哪里下载crm管理系统定制
  • 建网站论坛网站建设面试常见问题
  • 珠海市住房城乡建设局网站全面的哈尔滨网站建设
  • 付费做SPaSS统计分析的网站中企动力官网登陆
  • 网站开发制作计算器长沙城乡建设网站首页
  • 哈尔滨网站建设策划方案网站基础建设英文翻译
  • 怎么制作网站游戏深圳推广平台
  • 延吉网站开发房产网站门户系统
  • 宜兴网站设计网站整站开发视频教程
  • 免费网站托管平台忠县网站制作
  • 网站如何做才能被360收录百度容易收录的网站
  • 虚拟主机如何建设多个网站应届生在淮北招的网站建设类型岗位
  • 模板建站按年收费ui模板网站
  • 做网站 科目住房和城乡建设厅网站青海省
  • 上海定制化网站开发公司百度产品大全入口
  • 上传网站视频要怎么做才清楚贵阳市建设局地址网站
  • 怎么做情侣网站wordpress 添加分享