问题标签 [ecma262]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
80684 浏览

javascript - 为什么 JavaScript 中不推荐使用 arguments.callee.caller 属性?

为什么arguments.callee.callerJavaScript 中不推荐使用该属性?

它在 JavaScript 中被添加,然后被弃用,但 ECMAScript 完全省略了它。某些浏览器(Mozilla、IE)一直支持它,并且在地图上没有任何取消支持的计划。其他人(Safari、Opera)已经采用了对它的支持,但对旧浏览器的支持并不可靠。

是否有充分的理由将这个有价值的功能置于边缘?

(或者,有没有更好的方法来获取调用函数的句柄?)

0 投票
5 回答
4086 浏览

javascript - Javascript/ECMAScript 中函数的范围是什么?

今天我和一位同事讨论了 Javascript 中的嵌套函数:

在这个例子中,试验指出 b 在 a 的主体之外是不可到达的,就像 c 一样。但是,d 是 - 在执行 a() 之后。在ECMAScript v.3 标准中寻找这种行为的确切定义,我没有找到我正在寻找的确切措辞;Sec.13 p.71没有说的是,函数声明语句创建的函数对象要绑定到哪个对象。我错过了什么吗?

0 投票
3 回答
3875 浏览

javascript - JavaScript 中 [[Prototype]] 与原型的关系

来自http://www.jibbering.com/faq/faq_notes/closures.html

注意:ECMAScript 定义了内部 Object 类型的内部 [[prototype]] 属性。这个属性不能被脚本直接访问,但它是在属性访问器解析中使用的内部 [[prototype]] 属性引用的对象链;对象的原型链。存在一个公共原型属性以允许与内部 [[prototype]] 属性关联的原型的分配、定义和操作。两者之间的关系细节在 ECMA 262(第 3 版)中进行了描述,超出了本讨论的范围。

两人的关系有哪些细节?我浏览了 ECMA 262,我读过的所有内容如下:

构造函数的关联原型可以被程序表达式constructor.prototype引用,

原生 ECMAScript 对象有一个称为 [[Prototype]] 的内部属性。此属性的值为 null 或对象,用于实现继承。

每个内置函数和每个内置构造函数都有 Function 原型对象,它是表达式 Function.prototype 的初始值

每个内置原型对象都有 Object 原型对象,它是表达式 Object.prototype (15.3.2.1) 的初始值,作为其内部 [[Prototype]] 属性的值,除了 Object 原型对象本身。

由此我收集到的是 [[Prototype]] 属性等效prototype于几乎任何对象的属性。我弄错了吗?

0 投票
4 回答
1491 浏览

javascript - Ecma-262 (EcmaScript 5) 将如何帮助您?

EcmaScript 第五版或Ecma-262已发布,其中包含对语言的一些更改。新版本中的哪些功能将帮助您编写更好的代码?

0 投票
9 回答
1393 浏览

javascript - 哪些脚本语言类似于 ECMA?

我正在寻找一种 ECMAScript 替代方案来作为自定义应用程序逻辑的脚本语言。我喜欢 ECMA 的某些方面,尤其是新规范(如 AS3)的语法。

不幸的是,AS3 引擎不是开源的,无法集成到项目中。我想要一种专为面向对象使用而设计的脚本语言。

具体来说,是否有一种语言具有:

  • 静态类型变量(可选)
  • 类,包括公共/私人成员
  • 继承,包括接口
  • 套餐(可选)
  • 简洁的语法
  • 必须能够作为应用程序的内部脚本语言(如浏览器的 Javascript)进行接口,不能是外部系统调用。

我宁愿没有的事情

  • 凌乱的 ECMAprototype对象

您知道哪些语言适合此配置文件?我很难找到一种为良好的面向对象设计而设计的优质脚本语言。

0 投票
16 回答
147910 浏览

javascript - JavaScript 和 ECMAScript 有什么区别?

ECMAScript 和 JavaScript 有什么区别?根据我的推断,ECMAScript 是标准,JavaScript 是实现。这个对吗?

0 投票
9 回答
13244 浏览

.net - ECMAScript 是否有任何 .NET CLR/DLR 实现?

有谁知道针对.NET CLR/DLR的 ECMAScript的真实(即没有蒸汽软件)实现?理想情况下,类似于Rhino 对 Java 的应用。在 .NET Framework / Mono Framework 上运行的可靠 Rhino 端口将是完美的。

我只见过少数提到的项目,但从未见过任何曝光或实际上我曾经能够运行脚本的任何项目。这是我已经知道的:

  • MSScriptControl ActiveX 控件:AFAIK,这是微软最后一个真正符合 ECMAScript 的实现(运行 JScript 5.7)。我已经与 MSScriptControl 集成,但不认为 COM 互操作是这个问题的答案。x64 是这个选项的杀手锏。

  • JScript.NET:我不算 JScript.NET,因为它永远无法成功解析我的任何真实脚本。关闭似乎有问题。

  • 托管 JScript:听起来像我想要的,但它似乎已经死在水中了。这是 DLR 的一个主要示例实现,但随后与 SilverLight 纠缠在一起,并且自 2007 年以来似乎已不再是优先事项。有关此状态的可靠消息来源会有所帮助。

  • MyJScript:作为 DLR 的教程实现而构建。任何人都知道这是多么完整的实现?

  • Jint:.NET 的 JavaScript 解释器。目前还不支持 Currying 或try- catch- finally

  • .NET 的 RemObjects 脚本:一个有趣的竞争者仍在开发中。我对他们的营销方式感到困惑,不知道它实际上会是什么,但听起来它最终可能是合适的。如果有人对此有更多了解,那也会有所帮助。

  • V8 for .NET:如果有人将 V8 移植到 .NET,那就太好了。据我所知,这方面也没有很大的努力。该链接指向从托管 C++ 包装器调用它的想法。

作为背景,我希望能够从 .NET 中执行 JavaScript;即将一组脚本加载到上下文中并调用该上下文并检索执行结果。目前,我通过繁琐的 COM 互操作跳过箍来使用 MSScriptControl。COM 的不一致性使得部署和确保一致执行变得非常困难。

我希望能够从 .NET 中执行相当复杂的 JavaScript 测试工具。这不是用于创建用户宏或简单的小脚本;我需要一个真正的 JavaScript 环境,比如 Rhino。如果实现在 CLR(而不是 COM)之上运行,这将真正有助于解决当前的一些问题。

0 投票
9 回答
24719 浏览

asp.net - 如何为客户端上的 CustomValidator 控件重写 ErrorMessage?

我有一个 CustomValidator 正在验证几个不同电话编号方案的电话号码。客户端 javascript 如下所示:

实际验证正确进行,并且 CustomValidator 始终具有正确的 IsValid 属性。然而,sender.errormessage 似乎在这个函数调用它的默认值之后被重写了。如何更改 errormessage 值,并使其“粘住”?

0 投票
10 回答
84668 浏览

javascript - JSON 省略了 Infinity 和 NaN;ECMAScript 中的 JSON 状态?

知道为什么 JSON 忽略了 NaN 和 +/- Infinity 吗?它将 Javascript 置于一种奇怪的情况下,如果对象包含 NaN 或 +/- 无穷大值,则原本可以序列化的对象却不是。

看起来这是一成不变的:参见RFC4627ECMA-262(第 24.5.2 节,JSON.stringify,注 4,ECMA-262 pdf 的第 683 页最后编辑):

有限数被字符串化,就好像通过调用ToString(number). 无论符号如何, NaN和 Infinity 都表示为 String null

0 投票
4 回答
7411 浏览

javascript - 哪些 (javascript) 环境支持 ECMAscript 5 严格模式?(又名“使用严格”)

在我撰写本文时, ECMAScript 5处于最终草案中;这是由于包含一个严格模式,它将阻止您分配给全局对象、使用 eval 和其他限制。(John Resig 的文章是一个很好的介绍。)

这种神奇的理智保存模式是通过在文件(或函数)的顶部包含字符串“use strict”来触发的。但是,在旧环境中,“use strict”是无操作的。如果您添加“使用严格”并且不在严格的环境中对其进行测试,您可能会留下一个不严格的代码的定时炸弹,当它真正遇到严格的环境时会中断。

哪些环境实际上尊重“使用严格”?