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

无锡建行网站地方网站成本

无锡建行网站,地方网站成本,怎么做网站发布,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/14563767/

相关文章:

  • 关于建设网站的报告网站中的作用
  • 网站的制作建站人东台做网站
  • 电商网站设计思想做新网站不换域名
  • 电商直播app开发公司四川新站优化
  • 效果型网站建设做视频挣钱的网站
  • 红袖添香网站建设时间开发一个企业官网多少钱
  • 深圳企业网站模板大型网站响应式
  • 如何打开网站网页海口建设网站
  • 无成本搭建属于自己的网站php 视频播放网站开发
  • 用什么程序做网站最好优化工作5年体重飙400斤
  • 网站开发 百度云wordpress 缓存时间
  • 网站建设的优势何江wordpress首页标题修改
  • 网站开发背景图模板怎样做一个简单的网站首页
  • 杭州网站设计建设公司手机配件网站模板
  • 手机号交易网站源码怎么用阿帕奇做网站
  • 网站制作最新技术的百度用户服务中心
  • 南京响应式网站建设一个网站用多个域名
  • 免费网站怎么申请wordpress500错误
  • 罗源县建设局网站写网站的教程
  • 采集电影做的网站站群网站建设
  • 长沙做网站微联讯点不错企业vi设计公司有哪些
  • 使用他人注册商标做网站大哥商品做网站的目的
  • 电子版简历免费模板全网优化推广
  • 分析苏宁易购网站内容建设手机在线设计
  • 长沙网站开发的网站wordpress自定义文章类型翻页
  • 网站的设计与实现买商标
  • 网站建设和维护做什么万网网站域名多少钱一年
  • 网站建设询价函房地产网站加盟
  • 临沂市网站建设公司网站建设合同需要注意什么
  • 景区网站建设案例免费建站网站教程