iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Javascript对象及Proxy工作原理详解
  • 594
分享到

Javascript对象及Proxy工作原理详解

Javascript对象ProxyJavascript Proxy 2022-11-13 13:11:43 594人浏览 薄情痞子
摘要

正文 这一章其实算是javascript的科普文章,其实这本书的读者一般都不会是入门者,因此按道理说应该不需要再科普才对。但是作者依旧安排了这一章,证明就是这一章内容与我们以为的对象

正文

这一章其实算是javascript的科普文章,其实这本书的读者一般都不会是入门者,因此按道理说应该不需要再科普才对。但是作者依旧安排了这一章,证明就是这一章内容与我们以为的对象不一样。

Javascript中一切皆对象

这一句话大家应该耳熟能详,对于常规的字面量对象,和new出来的对象,大家应该都能分辨

const str = ''
const str2 = new String()
const obj = {}
const obj2 = Object.create()

但是根据ECMA,在javascript中其实分为2种对象:常规对象异质对象。任何不属于常规对象的都叫异质对象。

在javascript的世界中,函数也是一个对象。当我们指向Obj.foo时,其实就会调用对象内部[[Get]]方法去获取这个值,在ECMA中规定了如下内部方法(网图)。所以

所以,普通对象必须具有一组被称为基本内部方法(essential internal methods)的方法所定义的默认行为,也就是上图。如果改变了默认方法,那么就是异质对象。

比如Array,当我们把Array.lenght = 0,它会清空数组

当我看到这张图就知道了,如何判断一个变量到底是普通对象还是函数呢?答案就是判断它使用了[[Get]]还是[[Call]]

毫无疑问,Proxy是异质对象,它可以直接性改变一些默认方法。当我们在Proxy中没有定义Get拦截器的时候,他会调用对象内部自己的[[Get]]代理透明.

这一段话我反复看了很久,才明白它的意思。其实,proxy并不会直接改变对象内部方法和行为,它是通过指定需要代理的方法,去执行拦截的功能,这也与Proxy的用法符合。

const p = new Proxy(obj,{})

这时候p是与obj完全不相同的对象,有着不一样的内存地址。这就导致,当我们不能直接在p上去操纵obj,这时候我们就要反射Reflect,反射犹如一面镜子,映照着原始对象的地址,我们去操作原始对象obj,而不是p。

前面2章讲了一些关于ProxyReflect的八股文,下一章就是具体讲解vue3如何使用Proxy了。

以上就是Javascript对象及Proxy工作原理详解的详细内容,更多关于Javascript对象Proxy的资料请关注编程网其它相关文章!

--结束END--

本文标题: Javascript对象及Proxy工作原理详解

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

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

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

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

下载Word文档
猜你喜欢
  • Javascript对象及Proxy工作原理详解
    正文 这一章其实算是javascript的科普文章,其实这本书的读者一般都不会是入门者,因此按道理说应该不需要再科普才对。但是作者依旧安排了这一章,证明就是这一章内容与我们以为的对象...
    99+
    2022-11-13
    Javascript对象Proxy Javascript Proxy
  • JavaScript的Proxy对象详解
    目录一、Proxy 是什么?二、怎么用?1、使用 Proxy 的简单实例2、目标对象被正确修改3、使用 set handler 做数据验证4、扩展构造函数总结一、Proxy 是什么?...
    99+
    2022-11-12
  • Docker工作模式及原理详解
    如下图所示: 我们在使用虚拟机和docker的时候,就会出现这样一个疑问:Docker为什么比VM虚拟机快呢? 上面这张图就很客观的说明了这个问题 1、Docker有着比虚拟机更...
    99+
    2022-11-12
  • JavaScript闭包原理及作用详解
    目录简介闭包的用途柯里化实现公有变量缓存封装(属性私有化)闭包的原理垃圾收集简介实际开发中的优化简介 说明 本文介绍JavaScript的闭包的作用、用途及其原理。 闭包的定义 闭包...
    99+
    2022-11-12
  • 详解JavaScript对象转原始值
    目录Object.prototype.valueOf()Object.prototype.toString()Symbol.toPrimitive对象转换原始值1. 预期被转换成字符...
    99+
    2022-11-12
  • JavaScript数组及非数组对象的深浅克隆详解原理
    目录什么是浅克隆、深克隆1.对数组进行克隆1.1 浅克隆1.2 深克隆2.对非数组对象进行克隆2.1 浅克隆2.2 深克隆3.整合深克隆函数什么是浅克隆、深克隆 浅克隆:直接将存储在...
    99+
    2022-11-12
  • JavaScript操作DOM对象详解
    一、DOM基础 DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。DOM描绘了一个层次化的节点树,运行开发人员添加...
    99+
    2022-11-13
  • Springboot工作原理详解
    目录 一、Spring Boot 1.1.Spring Boot 优点  二、SpringBoot 运行原理 1.1. pom.xml  2.2. 主启动类的配置 3.3. 主启动类的运行 三、自动配置原理 3.1、启动类上注解的作用  3...
    99+
    2023-10-10
    spring boot java spring
  • 详解MyBatis工作原理
    目录一、Mybatis工作原理二、Mybatis运行原理总结一、Mybatis工作原理 Mybatis分层框架图 Mybatis工作原理图 源码分析:一般都是从helloworl...
    99+
    2022-11-12
  • SELINUX工作原理详解
    1. 简介 SElinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。     Security-Enhanced Linux (SELinux)由以下两部分组成: ...
    99+
    2022-06-04
    SELINUX 工作原理
  • Spring @Transactional工作原理详解
    本文将深入研究Spring的事务管理。主要介绍@Transactional在底层是如何工作的。之后的文章将介绍:propagation(事务传播)和isolation(隔离性)等属性的使用事务使用的陷阱有哪些以及如何避免JPA和事务管理很重...
    99+
    2023-05-30
  • 详解Java线程池的使用及工作原理
    目录一、什么是线程池?二、线程池要解决什么问题?三、线程池的使用四、常用阻塞队列五、线程工厂六、拒绝策略七、线程池的执行逻辑八、execute()方法九、执行流程一、什么是线程池? ...
    99+
    2022-11-12
  • 如何理解JavaScript预解析及对象
    本篇文章为大家展示了如何理解JavaScript预解析及对象,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、预解析1、变量预解析和函数预解析JavaScript 代码是由浏览器中的 JavaScr...
    99+
    2023-06-25
  • 详解SpringBootStarter作用及原理
    目录前言什么是 StarterStarter 的作用spring 整合组件spring-boot 整合组件Starter 原理前言 有没有在入行后直接基于 SpringBoot 开发...
    99+
    2023-05-17
    SpringBoot Starter作用原理 SpringBoot Starter作用 SpringBoot Starter原理
  • AQS(AbstractQueuedSynchronizer)抽象队列同步器及工作原理解析
    目录前言AQS是什么?用银行办理业务的案例模拟AQS如何进行线程管理和通知机制结语前言 AQS 绝对是JUC的重要基石,也是面试中经常被问到的,所以我们要搞清楚这个AQS到底是什么?...
    99+
    2022-11-13
  • 详解React Fiber的工作原理
    目录啥是React Fiber? 为什么会有React Fiber? React Fiber到底怎么工作的? React Fiber的实现原理 React Fiber对我们日常开发有...
    99+
    2022-11-12
  • 一文理解Redux及其工作原理
    目录一、是什么二、工作原理三、如何使用小结一、是什么 React是用于构建用户界面的,帮助我们解决渲染DOM的过程 而在整个应用中会存在很多个组件,每个组件的state是由自身进行管...
    99+
    2022-11-13
  • 详解JavaScript原型对象的this指向问题
    目录一、this指向二、修改this指向1、call()方法2、apply()方法总结 一、this指向 构造函数中的this 指向实例对象。那么原型对象this的指向呢? 如下:...
    99+
    2022-11-12
  • Pinia介绍及工作原理解析
    目录什么是Pinia如何使用Pinia安装创建store在组件中使用store在模板中使用storePinia是如何工作的什么是Pinia Pinia是Vue 3的状态管理库,它提...
    99+
    2023-03-06
    Pinia工作原理 Pinia原理
  • 你了解 Java 对象在 HTTP 加载时的工作原理吗?
    Java 对象在 HTTP 加载时的工作原理 在 Java 中,对象是一种非常重要的概念。随着 Web 技术的发展,HTTP 协议成为了 Web 应用程序中最常用的协议之一。在 Web 应用程序中,Java 对象在 HTTP 加载时的工作原...
    99+
    2023-07-27
    对象 http load
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作