美文网首页前端开发那些事儿前端100问
【前端100问】Q74:使用 JavaScript Proxy

【前端100问】Q74:使用 JavaScript Proxy

作者: alanwhy | 来源:发表于2021-02-08 08:53 被阅读0次

写在前面

此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
为了备战 2021 春招
每天一题,督促自己
从多方面多角度总结答案,丰富知识
使用 JavaScript Proxy 实现简单的数据绑定
简书整合地址:前端 100 问

正文回答

<body>
  hello,world
  <input type="text" id="model">
  <p id="word"></p>
</body>
<script>
  const model = document.getElementById("model")
  const word = document.getElementById("word")
  var obj= {};

  // Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。
  // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
  // const p = new Proxy(target, handler)
  const newObj = new Proxy(obj, {
      // 属性读取操作的捕捉器。
      get: function(target, key, receiver) {
        console.log(`getting ${key}!`);
        // Reflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法。这些方法与proxy handlers的方法相同。Reflect不是一个函数对象,因此它是不可构造的。
        // https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/reflect
        return Reflect.get(target, key, receiver);
      },
      // 属性设置操作的捕捉器。
      set: function(target, key, value, receiver) {
        console.log('setting',target, key, value, receiver);
        if (key === "text") {
          model.value = value;
          word.innerHTML = value;
        }
        return Reflect.set(target, key, value, receiver);
      }
    });

  model.addEventListener("keyup",function(e){
    newObj.text = e.target.value
  })
</script>

相关文章

  • 【前端100问】Q74:使用 JavaScript Proxy

    写在前面 此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我[https://github.co...

  • js前端如何判断请求是否有经过代理

    javascript detect proxy: how to detect a proxy using java...

  • Rxjs 的使用

    RxJS使用分: 前端Html 后端 前端使用方法 前端在Html中将RxJS作为普通Javascript库包引入...

  • 01-整体生态概况

    技术栈概览 JavaScript & TypeScript 目前前端技术栈主要都使用 JavaScript 开发。...

  • NODE-WEB03:Webpack框架

      本主题把目光聚焦在Javascript的前端开发技术上;用Javascript做前端开发等于使用C++开发Qt...

  • 前端100问

    HTML部分 1.空标签都有哪些?空标签什么特点2.行内元素?3.块级元素? CSS部分 JS部分 HTTP部分

  • 1.package.json解析

    1. 概述 如果使用 JavaScript、或者曾经与 JavaScript 项目、Node.js 或前端项目进行...

  • demo2 -多版本

    环境说明 frontend(proxy):前端应用,会请求后端的demoappservice: proxy dem...

  • demo1 - 单版本

    环境说明 frontend(proxy):前端应用,会请求后端的demoappservice: proxy dem...

  • JavaScript(Proxy)

    例子 参考 Proxy和Reflect Pitfall: not all objects can be proxi...

网友评论

    本文标题:【前端100问】Q74:使用 JavaScript Proxy

    本文链接:https://www.haomeiwen.com/subject/dqdxxltx.html