iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >JavaScript代理对象Proxy怎么创建使用
  • 919
分享到

JavaScript代理对象Proxy怎么创建使用

2024-04-02 19:04:59 919人浏览 安东尼
摘要

这篇文章主要讲解了“javascript代理对象Proxy怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript代理对象Proxy怎

这篇文章主要讲解了“javascript代理对象Proxy怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript代理对象Proxy怎么创建使用”吧!

JavaScript代理对象Proxy怎么创建使用

Jquery,它是事件驱动类型的,也就是说,当一个数据与DOM的某个内容相关联的时候,我需要在这个数据改变之后,去操作DOM来进行同步:

<div id="data">数据</div>
var data = "数据"
// 通过某种事件数据发生了变化
data = "新数据"
$("#data").text = data

简单的交互中,这个方式看起来还是方便,但是一旦交互庞大起来,代码就臃肿得不行。

而在我快毕业的时候angular,Vue,React兴起,我们发现了一种新的方式——数据驱动,也就是说,通过DOM与数据的“绑定”我们可以直接修改数据,DOM内容直接就出现了变化。

<div>{{data}}</div>
var data = "数据"
// ...某种方式进行了绑定
data = "新数据"

DOM中的内容直接就变成了新数据。使用起来非常方便,代码也比较简洁,在当时看来感觉很神奇。

不同的数据驱动的框架,其绑定原理和过程都各有不同,并且都比较复杂。不过今天我们简化一下,用js的Proxy代理对象来实现数据驱动。(顺便一提,vue3的响应式数据就用了这个原理,当然,会比今天的例子复杂得多)

Proxy对象是什么

Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。具体的使用方法为:

new Proxy(要代理的对象,代理的事件对象)

可以代理的事件有如下几个:

事件描述
get读取属性
set设置属性
deletedelete操作符
ownKeysgetWonPropertyNames方法和 getOwnPropertySymbols
constructnew操作符
definePropertydefineProperty方法
getOwnPropertyDescriptorgetOwnPropertyDescriptor方法
preventExtensionspreventExtensions方法
isExtensibleisExtensible方法
setPrototypeOfsetPrototypeOf方法(也就是设置.__proto__)
getPrototypeOfgetPrototypeOf方法(也就是取.__proto__)

使用Proxy写一个简单的数据驱动视图

既然了解了Proxy的基本用法了,那么我们就可以使用它来代理对象的setter来实现数据驱动了。

首先定义一个与数据同ID的DOM元素:

<div id="firstName"></div>
<div id="age"></div>

data设置Proxy代理,代理其setter,在其中对DOM进行操作:

var data = {
  firstName: "",
  age: 0
}
var p_data = new Proxy(data, {
    set: function (obj, prop, newval) {
      document.getElementById(prop).innerText = newval;
      obj[prop] = newval;// 别忘了实现原有逻辑
      return true; // setter代理的要求,处理成功后返回true
    }
})

之后设定初值,并设定相关交互,并且注意,操作的都是代理p_data而并非data:

p_data.firstName = "两秒后显示姓名……"
p_data.age = 25
setTimeout(() => {
  p_data.firstName = "林语琛"
}, 2000)
document.getElementById("grow").onclick = function() {
  p_data.age++
}

这样就实现了数据驱动,只要任意对p_data的属性值进行修改,DOM的内容就可以直接变化了:

JavaScript代理对象Proxy怎么创建使用

JS

var data = {
  firstName: "",
  age: 0
}
var p_data = new Proxy(data, {
    set: function (obj, prop, newval) {
      document.getElementById(prop).innerText = newval;
      obj[prop] = newval;
      return true
    }
})
p_data.firstName = "两秒后显示姓名……"
p_data.age = 25
setTimeout(() => {
  p_data.firstName = "林语琛"
}, 2000)
document.getElementById("grow").onclick = function() {
  p_data.age++
}

感谢各位的阅读,以上就是“JavaScript代理对象Proxy怎么创建使用”的内容了,经过本文的学习后,相信大家对JavaScript代理对象Proxy怎么创建使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript代理对象Proxy怎么创建使用

本文链接: https://www.lsjlt.com/news/98642.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript代理对象Proxy怎么创建使用
    这篇文章主要讲解了“JavaScript代理对象Proxy怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript代理对象Proxy怎...
    99+
    2022-10-19
  • JavaScript对象管家Proxy怎么使用
    这篇文章主要介绍“JavaScript对象管家Proxy怎么使用”,在日常操作中,相信很多人在JavaScript对象管家Proxy怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript对...
    99+
    2023-07-05
  • JavaScript中的Proxy对象怎么使用
    本篇内容主要讲解“JavaScript中的Proxy对象怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中的Proxy对象怎么使用”吧!什么是ProxyProxy是Ja...
    99+
    2023-07-05
  • 怎么使用JavaScript创建多个对象
    本篇内容介绍了“怎么使用JavaScript创建多个对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、...
    99+
    2022-10-19
  • JavaScript中怎么创建对象
    小编给大家分享一下JavaScript中怎么创建对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ECMA-262把对象定义为:...
    99+
    2022-10-19
  • 怎么用JavaScript创建多个对象
    本文小编为大家详细介绍“怎么用JavaScript创建多个对象”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用JavaScript创建多个对象”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2022-10-19
  • JavaScript怎么创建类和对象
    这篇文章主要介绍了JavaScript怎么创建类和对象的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript怎么创建类和对象文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-10-19
  • JavaScript日期对象Date怎么创建和使用
    这篇文章主要介绍了JavaScript日期对象Date怎么创建和使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript日期对象Date怎么创建和使用文章都会有所...
    99+
    2022-10-19
  • 如何使用JavaScript创建对象
    这篇文章将为大家详细讲解有关如何使用JavaScript创建对象,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript对每个创建的对象都会设置一个原型,指向它...
    99+
    2022-10-19
  • javascript中怎么通过面向对象创建对象
    本篇文章为大家展示了javascript中怎么通过面向对象创建对象,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。方式一:通过内置Object对象的方式创建 然后通过...
    99+
    2022-10-19
  • JavaScript中怎么创建Web Worker对象
    今天小编给大家分享一下JavaScript中怎么创建Web Worker对象的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
    99+
    2022-10-19
  • JavaScript访问对象方法怎么创建
    这篇文章主要讲解了“JavaScript访问对象方法怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript访问对象方法怎么创建”吧! ...
    99+
    2022-10-19
  • java中怎么使用new创建对象
    在Java中,可以使用关键字new来创建一个对象。具体的语法是: 类名 对象名 = new 类名(); 其中,类名是要创建对象的类的...
    99+
    2023-10-24
    java
  • JavaScript中怎么创建一个高级对象
    这篇文章给大家介绍JavaScript中怎么创建一个高级对象,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript创建高级对象1)使用构造函数创建对象的实例在JAVASCR...
    99+
    2022-10-19
  • javascript不使用new能够创建对象吗
    本篇内容介绍了“javascript不使用new能够创建对象吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • JavaScript中创建一个xhr对象并使用
    本篇内容介绍了“JavaScript中创建一个xhr对象并使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-19
  • Javascript怎么创建Object对象及添加属性
    今天小编给大家分享一下Javascript怎么创建Object对象及添加属性的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
    99+
    2022-10-19
  • 怎么用java反射创建对象
    使用Java反射创建对象需要以下步骤:1. 获取Class对象:首先需要获取要创建对象的类的Class对象。可以通过类名直接调用`C...
    99+
    2023-10-10
    java
  • 怎么使用Java构造方法创建对象
    要使用Java构造方法创建对象,可以按照以下步骤进行操作: 首先,在类中定义一个构造方法。构造方法的名称必须与类的名称相同,没有...
    99+
    2023-10-23
    Java
  • ES6中怎么使用字面量创建对象
    本篇内容介绍了“ES6中怎么使用字面量创建对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字面量语法扩展在 ES6 模式下使用字面量创建对...
    99+
    2023-06-17
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作