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

沈阳网站建设 龙兴科技含数据的wordpress

沈阳网站建设 龙兴科技,含数据的wordpress,交互设计专业大学排名,学做陶艺作品的网站文章目录 1 Proxy代理1.1 get方法1.2 set方法1.3 has方法1.4 this问题 2 Reflect对象2.1 代替Object的某些方法2.2 修改某些Object方法返回结果2.3 命令式变为函数行为2.4 配合Proxy 1 Proxy代理 Proxy如其名#xff0c;它的作用是在对象和和对象的属性值之间设置一个代理它的作用是在对象和和对象的属性值之间设置一个代理获取该对象的值或者设置该对象的值 以及实例化等等多种操作 都会被拦截住 经过这一层我们可以统一处理我们可以认为它就是“代理器”。 ES6之前 let obj {}// let arr [1,2,3] // push pop // console.log(box) Object.defineProperty(obj, data, { // obj--对象data--属性get(){console.log(get)return box.innerHTML},set(value){console.log(set,value)// 设置 dombox.innerHTML value} })console.log(obj)1.1 get方法 let target {} let proxy new Proxy(target, {get(target, prop){return target[prop]} })1.2 set方法 let target {} let proxy new Proxy(target, {get(target, prop){return target[prop]},set(target, prop, value){if(prop data){box.innerHTML value}target[prop] value;} })1.3 has方法 has捕获器拦截对象属性的in操作符的调用当使用in操作符来检查一个属性是否存在于一个对象时如果对象是个proxyhas捕获器就会被调用。 let target {_prop: 内部数据 } let proxy new Proxy(target, {get(target, prop) {return target[prop]},set(target, prop, value) {if (prop data) {box.innerHTML value}target[prop] value;},has(target, key) {if (key[0] _) {return false;}return key in target;} })1.4 this问题 let target new Set() const proxy new Proxy(target, {get(target, key) {const value target[key]// 遇到Function都手动绑定一下this// 正常调用时this指向proxy// bind修正后value方法的this指向target对象if(value instanceof Function) {console.log(访问${value}方法了)return value.bind(target)// 不能是call / apply改变页面加载之后就立即执行同步代码// bind 不会立即执行原函数异步代码 }return value} }) proxy.add(1)Proxy本质上属于元编程非破坏性数据劫持在原对象的基础上进行了功能的衍生而又不影响原对象符合松耦合高内聚的设计理念。 2 Reflect对象 Reflect可以用于获取目标对象的行为它与Object类似但是更易读为操作对象提供了一种更优雅的方式。它的方法与Proxy是对应的。 2.1 代替Object的某些方法 const obj { }; Reflect.defineProperty(obj, name, {value: kerwin,writable: false,configurable:false }); 2.2 修改某些Object方法返回结果 // 老写法 try {Object.defineProperty(target, property, attributes);// success } catch (e) {// fail }// 新写法 if(Reflect.defineProperty(target, property, attributes)) {// success } else {// fail }2.3 命令式变为函数行为 const obj {name:kerwin }; //老写法 console.log(name in obj) //true //新写法 console.log(Reflect.has(obj, name)) //true//老写法 delete obj.name //新写法 Reflect.deleteProperty(obj, name)2.4 配合Proxy Reflect.set()和Reflect.get()。 let obj {name:kerwin }Reflect.set(obj, age, 100) console.log(Reflect.get(obj, name))let target new Set() const proxy new Proxy(target, {get(target, key) {const value Reflect.get(target, key)if (value instanceof Function) {console.log(访问${value}方法了)return value.bind(target)}return value},set() { // set(target, key, value)return Reflect.set(...arguments)} }) proxy.add(1)let arr [1, 2, 3] let proxy new Proxy(arr, {get(target, key) {console.log(get, key)return Reflect.get(...arguments)},set(target, key, value) {console.log(set, key, value)return Reflect.set(...arguments)} }) proxy.push(4) // 能够打印出很多内容 // get push (寻找 proxy.push 方法) // get length (获取当前的 length) // set 3 4 (设置 proxy[3] 4) // set length 4 (设置 proxy.length 4)
http://www.hkea.cn/news/14386858/

相关文章:

  • 美食网站需求分析湛江做网站咨询电话
  • 公司门户网站开发价格工作室是个体户还是公司
  • 工商注册在哪个网站龙岩新罗区建设局网站
  • 武胜建设局网站产品网络营销方案
  • 千户微建站平台合肥装修
  • 上海源码网站建设公司想在公司局域网做建网站
  • 网站制作经费预算表网站平台建设步骤
  • 龙溪营销型网站制作网站标签布局
  • 如何做自己的业务网站淄博桓台网站建设公司
  • 天津网站制作价格江门关键词优化公司
  • 打开一个网站搜索页面跳转js代运营公司网站
  • 叶县红色家园网站建设静态页面改wordpress
  • xp做网站服务器吗腾讯云备案网站建设方案书
  • 网站设计哪家口碑好网站建设 开发人一丶一一人一一
  • 手机网站营销页电商网站建设实验原理
  • 杭州正规企业网站建设深圳手机企业网站设计
  • 官方网站建设 省心磐石网络网站开发维护承担的法律责任
  • 这样自己做网站网站建设费合同
  • 随州网站建设学习做网站都需要买什么软件
  • wordpress免登录支付宝长沙seo就选智优营家
  • 上海市建设工程质监站网站dedecms wordpress
  • 合肥响应式网站建设方案燕郊网站制作
  • 自己做的网站怎么放图片如何理解网络营销
  • 门户网站做公众号的好处长春经开人才网
  • 东莞网页制作设计培训网络优化的意义
  • 禅城区做网站策划西安网站推广公司
  • 哈尔滨网站建设优化公司欧亚专线到国内多久
  • 南京专业的网站设计团队广告在线设计网站
  • 可以搜索企业信息的软件潍坊seo建站
  • 企业网站设计好的缺点有哪些如何做汽车的创意视频网站