ECMA-262 V7.0 中关于反射的描述

Mistral Medium 3:面向欧洲合规与工业部署的大模型工程实践 大模型的‘先进性’正从参数规模与基准分数,转向可审计性、可预测性与可嵌入性等工程化指标。在AI治理日趋严格的背景下,以欧盟《人工智能法案》(AI Act)和GDPR为约束前提的模型设计,已成为企业级AI落地的核心门槛。Mistral Medium 3并非通用能力竞赛的参与者,而是聚焦推理确定性、输出合规约束(OCE)、低延迟部署与可验证交付链(VDC)的技术范式代表——它将‘合规即服务’和‘工业级SLA保障’深度融入模型架构与工具链,尤其适用于金融风控、医疗文书、智能制造等对响应延迟、数据主权与审计留痕有硬 阅读详情

26 反射

译者目前在做前端,博客内容主要是文档翻译。如果读者希望我翻译某些和前端相关的文档,欢迎留言告诉我。对于已有在网络上能够搜到质量较高译文的文章,我就不做重复工作了。本人精力有限,翻译质量达不到出版书籍的程度,可能有些人看不懂,不过我相信这总会帮助到一些人。有空的时候我会返回来对之前的文章进行润色。

原文 http://www.ecma-international.org/ecma-262/7.0/index.html#sec-reflection

26.1 反射对象

反射对象是%Reflect%固有对象并且是全局对象的Reflect属性的初始值。反射对象是普通对象(ordinary object)。

反射对象的[[Prototype]]内部槽的值是%ObjectPrototype%固有对象。

反射对象不是函数对象。它不具备[[Construct]]内部方法,不可以把反射对象用作new操作符的构造器。反射对象也不具备[[Call]]内部方法,不可以将反射对象当作函数调用。

26.1.1 Reflect.apply ( target, thisArgument, argumentsList )

1.如果IsCallable(target)为false,抛出TypeError异常。
2.让args为 CreateListFromArrayLike(argumentsList)。
3.执行 PrepareForTailCall()。
4.返回 Call(target, thisArgument, args)。

26.1.2 Reflect.construct ( target, argumentsList [ , newTarget ] )

1.如果IsConstructor(target)是false,抛出TypeError异常。
2.如果没有提供newTarget,那么让newTarget为target。
3.否则如果IsConstructor(newTarget)是false,抛出TypeError异常。
4.让args为 CreateListFromArrayLike(argumentsList)。
5.返回 Construct(target, args, newTarget)。

26.1.3 Reflect.defineProperty ( target, propertyKey, attributes )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为 ToPropertyKey(propertyKey)。
3.让desc为ToPropertyDescriptor(attributes)。
4.返回 target.[[DefineOwnProperty]](key, desc)。

26.1.4 Reflect.deleteProperty ( target, propertyKey )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为ToPropertyKey(propertyKey)。
3.返回 target.[[Delete]](key)。

26.1.5 Reflect.get ( target, propertyKey [ , receiver ])

1.如果Type(target)不是Object,抛出TypeError错误。
2.让key为ToPropertyKey(propertyKey)。
3.如果没有参数receiver,那么
    a.让receiver为target。
4.返回 target.[[Get]](key, receiver)。

26.1.6 Reflect.getOwnPropertyDescriptor ( target, propertyKey )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为 ToPropertyKey(propertyKey)。
3.让desc为target.[[GetOwnProperty]](key)。
4.返回 FromPropertyDescriptor(desc)。

26.1.7 Reflect.getPrototypeOf ( target )

1.如果Type(target)不是Object,抛出TypeError异常。
2.返回 target.[[GetPrototypeOf]]()。

26.1.8 Reflect.has ( target, propertyKey )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为ToPropertyKey(propertyKey)。
3.返回 target.[[HasProperty]](key)。

26.1.9 Reflect.isExtensible (target)

1.如果Type(target)不是Object,抛出TypeError异常。
2.返回 target.[[IsExtensible]]()。

26.1.10 Reflect.ownKeys ( target )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为 target.[[OwnPropertyKeys]]()。
3.返回 CreateArrayFromList(keys)。

26.1.11 Reflect.preventExtensions ( target )

1.如果Type(target)不是Object,抛出TypeError异常。
2.返回 target.[[PreventExtensions]]()。

26.1.12 Reflect.set ( target, propertyKey, V [ , receiver ] )

1.如果Type(target)不是Object,抛出TypeError异常。
2.让key为 ToPropertyKey(propertyKey)。
3.如果没有参数receiver,那么
    a.让receiver为target。
4.返回 target.[[Set]](key, V, receiver)。

26.1.13 Reflect.setPrototypeOf ( target, proto )

1.如果Type(target)不是Object,抛出TypeError异常。
2.如果Type(proto)不是Object并且proto不是null,抛出TypeError异常。
3.返回 target.[[SetPrototypeOf]](proto)。

26.2 代理对象

26.2.1 代理构造器

代理构造器是%Proxy%固有对象并且是全局对象的Proxy属性的初始值。当被当作构造器调用时,它创建并初始化一个新的代理外来对象(proxy exotic object)。Proxy不应被作为一个函数调用,那样会抛出一个异常。

26.2.1.1 Proxy ( target, handler )

1.如果NewTarget是undefined,抛出TypeError异常。
2.返回 ProxyCreate(target, handler)。

26.2.2

Proxy构造器内部槽[[Prototype]]的值是固有对象 %FunctionPrototype%。

Proxy构造器没有prototype属性因为代理外来对象没有需要初始化的[[Prototype]]内部槽。

Proxy构造器具有下面的属性:

26.2.2.1 Proxy.revocable ( target, handler )

Proxy.revocable函数被用来创建可撤销的代理对象。

1.让p为 ProxyCreate(target, handler)
2.让revoker被一个新的内建函数,它被定义在26.2.2.1.1。
3.设置revoker的[[RevocableProxy]]内部槽为p。
4.让result为 ObjectCreate(%ObjectPrototype%)。
5.执行 CreateDataProperty(result, "proxy", p)。
6.执行 CreateDataProperty(result, "revoke", revoker)。
7.返回 result。
26.2.2.1.1 代理可撤销函数

一个代理可撤销函数(Proxy revocation function)是一个匿名函数,它可以使一个特定的代理对象无效。

每一个代理可撤销函数具有一个[[RevocableProxy]]内部槽。

当一个代理可撤销函数F被调用:

1.让F的[[RevocableProxy]]的内部槽的值为p。
2.如果p是null,返回undefined。
3.设置F的[[RevocableProxy]]内部槽的值为null。
4.断言:p是一个代理对象。
5.设置p的[[ProxyTarget]]内部槽为null。
6.设置p的[[ProxyHandler]]内部槽为null。
7.返回undefined。

代理可撤销函数的length属性为0。

26.3 模块命名空间对象

一个模块命名空间对象(Module Namespace Object)是一个模块命名空间外来对象,提供运行时基于属性的对模块导出绑定的访问。模块命名空间对象没有构造器函数。反而,这样的对象被每一个具有 NameSpaceImport的ImportDeclaration导入(import)的模块所创建。

除了9.4.6中定义的属性,每个模块命名空间对象具有下面的自有属性:

26.3.1 @@toStringTag

@@toStringTag属性的初始值是字符串Module。
这个属性具有元属性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true }。

26.3.2 [ @@iterator] ( )

1.让N为this值。
2.如果N不是一个模块命名空间外来对象,抛出TypeError异常。
3.让exports为N的[[Exports]]内部槽的值。
4.返回 CreateListIterator(exports)。

这个函数的name属性值为 [Symbol.iterator]。

JavaScript保留字:引擎词法解析的硬性边界与工程避坑指南 JavaScript保留字是语言语法的基础构件,本质是词法分析器在源码解析初期识别语句结构的关键锚点,直接影响AST生成效率与代码合法性。其设计遵循‘无歧义分词’原理,分为基础保留字、未来保留字和受限词三类,约束强度逐级递减,并随ES标准演进动态扩展——如await因async函数引入而升级为保留字,static因类静态方法语法被强化。技术价值在于保障解析确定性、防止运行时歧义、支撑现代工具链(Babel/ESLint/TS)的静态检查能力。典型应用场景涵盖变量命名、JSX属性映射、Electron跨进程脚 阅读详情

相关推荐

全面了解JavaScript语言

起源 JavaScript是由web发展初期的网景(Netscape)公司创建,是Oracle的注册商标,用来特指网景公司对这门语言的实现,网景公司将这门语言作为标准提交给了ECMA-欧洲计算机制造协会,还是由于注册商标上的冲突,将这门语言的标准版修改了新名字:ECMAScript,依然由于注册商标冲突,后被微软取了一个广为人知的名字Jscript,最后,所有人都把这门语言称之为JavaScrip...

🏆 前端领域优质创作者 6862

ECMA-262 V7.0 中关于数据类型和值的说明

原文 http://www.ecma-international.org/ecma-262/7.0/index.html#sec-ecmascript-data-types-and-values6 ECMAScript数据类型和值这篇规范中的算法操作的每一个值都有一个对应的类型。在这节中给出所有可能的类型的明确定义。类型进一步被分为ECMAScript语言类型和规范类型。术语empty用来表示没有任

ruojianll的博客 975

ECMA-262.pdf

ECMA标准

JAVA中的反射机制详解

JAVA中的反射机制详解2008-03-14 15:43 JAVA反射机制     JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java

如是所来的专栏 982

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1777

Java:描述反射机制的作用?举几个反射的应用?

说多多的也没用,我就简单给你介绍几个。既然你学了Java,那么反射就算你不会,你在学习过程中也会经常遇到。1、有了反射机制,那么就能逆向代码了,反编译器就是这个原理。2、像流行的框架,Spring,Hibernate等,就是利用反射机制,要不然怎么可能你配置下文件就完事呢3、动态生成类啊,当然spring里面都用到了。希望我的回答对你有帮助! 转载于:https://www.cnblo...

weixin_30315723的博客 230

QMI8658A和QMC5883L传感器校准全攻略:从零偏校准到椭球拟合

本文详细解析了QMI8658A和QMC5883L传感器的校准方法,从零偏校准到椭球拟合,涵盖了9轴运动传感器的核心误差来源及补偿技术。通过实战案例和数学建模,帮助开发者提升传感器精度,适用于无人机、AR/VR等智能硬件应用。

weixin_29189381的博客 158

ECMAscript和Javascript的区别

ECMAscript VS JavaScript 刚开始学习js的时候很困惑,一些论坛网站书本会提到ECMAscript和ES5/6等字眼,这个东西跟我学习的js有什么关系吗?当时我怀疑我学习的js是过时的js,如同我刚学pthon的时候,大家都转py3,而我却浑然不知还在py2上发力。 基于这个前提,在学习javascript之前,我们先搞清楚ECMAscript和javascript的区别和历史渊源。 ECMAscript 和ECMA International ECMA International是一

蓝色的天空的博客 1738

FI 应计对象的创建和摊销

创建/修改:ACACTREE01/ACACTREE02 应计对象的过账:ACACPOSTING

nancyln9711的博客 903

FFTW多核优化避坑指南:从交叉编译到ELF2板载OpenMP部署全流程

本文详细介绍了在ELF2开发板(RK3588平台)上为FFTW库配置OpenMP多核并行的完整流程与避坑指南。内容涵盖从交叉编译、库依赖处理到板载部署的实战步骤,并深入分析了RK3588的big.LITTLE架构对线程调优的影响,帮助开发者在嵌入式环境中高效利用多核性能。

2a4s6d8f0g的博客 272

ECMAScript和JavaScript的区别

1、ECMAScript的简介 ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它可以理解为是JavaScript的一个标准,但实际上后两者是ECMA...

pan_junbiao的博客 1万+

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3211

浏览器中 for in 反射 对象成员 的差异

我们知道 众浏览器的js引擎 在 for in 反射 某对象成员时 是一次性获该对象的 比如 var obj={a:1}; for (var o in obj){ obj={a:1,b:2}; } 整个for 循环 只会执行一次 及时我们再循环内部改变了obj 的引用 但是 反射对象始终是 in后面那个obj的原始引用 . 也可以称作 for in 缓存...

weixin_30480651的博客 134

​银行IT运维人必看!IT运维监控指标大全,一篇讲透

文章摘要:本文从七个维度系统阐述了IT运维指标体系,涵盖机房环境、基础设施、网络设施、数据存储、虚拟化平台、数据库中间件和应用层。作者结合20年金融行业经验,详细分析了各层级关键监控指标、正常范围及异常后果,并给出典型故障场景。重点强调现代运维需从被动响应转向主动预防,通过精细化指标管理实现系统稳定性保障。文章特别指出,在国产化与DevOps背景下,运维工作需兼顾传统架构与新兴技术,构建全方位监控体系,将运维从"故障报警"升级为"业务守护"。

最近开始研究AIGC领域技术,欢迎交流 1106

Keil C51里用printf打印数据,为啥总出乱码?手把手教你%bd、%hd、%ld的正确用法

本文深入解析Keil C51中printf打印数据出现乱码的根本原因,并提供格式符%bd、%hd、%ld的正确用法指南。通过详细的调试技巧和实战案例,帮助开发者解决串口输出问题,提升单片机开发效率。

weixin_26854829的博客 281

深入浅出 JavaScript 对象 v0.5

JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同。笔者主要参考《JS 高级程序设计》、《JS 权威指南》和《JS 精粹》 本文由浅入深的讲解了对象的概念,特性,和使用,由于笔者水平的确有限,有些观点也是边理解,边查证,边分享。 希望大家都能感受到分享的乐趣,祝我们共同进步,请大家不吝交流。 目录 对象是什么? 对象有什么特性? 对象有什么用? 如...

weixin_34370347的博客 120

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ECMAScript

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。 目录 1 历史2 版本3 方言4 对应版本5 参考文献6 参见7 外部链接 历史 199

ajian005的专栏 4778

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Javascript学习日志 (一) 基本知识

1 历史   1995年2月, Netscape开发了一种名为Livescript的脚本语言,为了赶上Java的热潮被Netscape将其改名为Javascript。   1997年,完成了ECMAScript标准化脚本语言。 2 javascript实现   ECMAScript只是Javascript的一部分,之外Javascript还包括DOM和BOM。   EC...

weixin_30386713的博客 94

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JavaScript快速入门(一)——JavaScript概览

JavaScript是什么?

熊猫正尽责 1万+

JavaScript

JavaScript 入门指南

wwxx1981的博客 330

Javascript学习日志 (二) 变量、作用、内存问题

1 历史   1995年2月, Netscape开发了一种名为Livescript的脚本语言,为了赶上Java的热潮被Netscape将其改名为Javascript。   1997年,完成了ECMAScript标准化脚本语言。 2 javascript实现   ECMAScript只是Javascript的一部分,之外Javascript还包括DOM和BOM。   EC...

weixin_30367873的博客 90
上一篇: ECMA-262 V7.0 中关于数据类型和值的说明
下一篇: Angular Universal 官网翻译
若简LL
博客等级 码龄11年 8粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值