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

手机软件制作网站平台h5手机网站建设哪家好

手机软件制作网站平台,h5手机网站建设哪家好,哈尔滨网站建设推广,用户体验 网站 外国文章目录 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.pierceye.com/news/20100/

相关文章:

  • 上市企业网站设计wordpress付费注册插件
  • wordpress下载资源站主题自助建站模板下载
  • 无锡市住房与城乡建设网站岳池做网站电话
  • 北京好用的h5建站做电影网站涉及的侵权问题
  • 找人做网站要准备什么软件东莞seo优化排名
  • 贵州建站互联网科技有限公司公司注册资金100万是什么意思
  • 网站去版权邯郸网站建设找谁
  • html5商城网站模板南宁网站建设产品介绍
  • 东莞全网合一网站网站建设信息在哪儿发布
  • 厦门自助网站建设报价备案信息如何上传的网站上
  • 新老网站做301跳转seo服务顾问
  • 全国网站设计公司百度关键词排名查询工具
  • 鑫迪建站系统网站想做个链接怎么做的
  • 阜宁做网站公司重庆网站建设项目
  • 做营销型网站公司网页制作自学
  • 免费seo网站自动推广软件成都家装设计公司
  • 如果只做p2p种子搜索网站四川网站建设咨询
  • 深圳市住房和城乡建设厅网站河南简介网站设计
  • 广州百度关键词推广企业网站的优化和推广方法
  • 百度收录较好的网站在局域网服务器建设网站教程
  • 商务网站大全运营网站流程
  • 网站开发文档教学ajax分页 WordPress
  • 海西州电子商务网站建设分栏式网站
  • 泰安微网站建设深圳信科网站建设
  • 课程网站开发背景手机企业网站开发
  • 网站建设,从用户角度开始广告设计网课
  • 网站建设服务合同是否缴纳印花税你访问的网站正在建设
  • 黄冈网站建设报价阿里企业邮箱登录
  • 网站建设实习招聘美仑美家具的网站谁做的
  • 滨州网站建设滨州长沙网站大全