问题标签 [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.
java - 在 Java 中模拟 ActionScript 3.0 / JavaScript DateTime
我希望将一些 DateTime 功能从 ActionScript 3.0 移植到 Java/Android。我目前正在看乔达。在使用此选项之前,我想知道是否实际上有任何符合 ECMA-262 第 3 版合规性的 DateTime 对象的实现?还是有更好的选择(更小/更轻)的解决方案来实现这一目标?
javascript - 为什么 JSON 只允许字符串作为键?
为什么 JSON 只允许 astring
成为一对的键?为什么不是其他类型,例如null
, number
, bool
, object
, array
?考虑到 JSON 与 JavaScript 密切相关,我可以从 JavaScript 规范 (ECMA-262) 中得出原因吗?我完全是 JavaScript 的新手,你能帮我指出来吗?
javascript - 在严格模式下获取对未知环境中全局对象的引用
在未知主机环境中以 ES5 严格模式获取全局对象的句柄的推荐方法是什么?
ECMAScript 没有提供一种内置方式来引用我所知道的全局对象。如果是这样,这就是我正在寻找的答案。
在已知环境中,全局对象通常具有自引用属性。由于全局对象是全局作用域的VO,全局对象的属性是全局变量,所以我们可以使用它们从任何地方获取全局对象的句柄:
在网络浏览器中,我们可以使用
window
或self
。在 node.js 中,我们可以使用
global
.
但是,并非所有主机环境都如此。据我所知,Windows Script Host 没有提供任何访问全局对象的方法。在 WSH 中获取全局对象的推荐方法似乎是this
在不解析为对象的上下文中使用关键字。例如:
这种技术适用于任何主机环境,但不适用于严格模式,因为 undefined不会在严格模式下this
引用全局对象:
如果 this 在严格模式代码中进行评估,则 this 值不会被强制转换为对象。null 或 undefined 的 this 值不会转换为全局对象,原始值也不会转换为包装器对象。通过函数调用(包括使用 Function.prototype.apply 和 Function.prototype.call 进行的调用)传递的 this 值不会将传递的 this 值强制传递给对象(10.4.3、11.1.1、15.3.4.3、15.3. 4.4)。
正如预期的那样,以下代码导致undefined
:
那么,无论严格模式如何,在任何环境中获取全局对象句柄的正确方法是什么?
顺便说一句,我目前的方法是嗅探引用全局对象的全局变量,如下所示:
...然后只需使用global
. 我认为这是一个糟糕的解决方案,原因有很多,其中大部分是相当明显的,它并没有解决 WSH 问题。
javascript - 有什么方法可以检查是否强制执行严格模式?
无论如何要检查是否强制执行严格模式“使用严格”,我们想为严格模式执行不同的代码,为非严格模式执行其他代码。寻找类似的功能isStrictMode();//boolean
javascript - Javascript赋值运算符不起作用
log.original_fields 始终为空。为什么?
javascript - 使用原型而不是在对象本身上声明属性有什么好处吗?
原型用于声明一类对象的属性和方法。使用原型的一个优点是它节省了内存,因为类的所有实例都指向原型的属性和方法,这节省了内存并有效地允许类的所有实例将属性视为静态。
原型用于通过原型链进行继承。
我的问题很简单。当你能做到的时候,为什么还要使用原型:
那正确吗?所以原型的主要目的有三个:
- 节省内存
- 提供静态属性
- 是引用类型从超类继承的唯一方法
javascript - 编写符合 ECMAScript5 的代码(第 2 部分)
我目前正在学习高级 JavaScript,目的是构建一个符合标准(HTML5、CSS3、ESv5)的库。一路走来,我已经问了几个相关的问题,试图弄清楚从哪里开始,做什么,不做什么,避免什么等。我已经开始阅读 ECMA-262(ECMAScript 版本 5)文档,并且在我开始开发工作之前已经运行了一些测试。
以前的问题:
JavaScript、JScript 和 ECMAScript 有什么区别?
在我的研究中,我发现不同的浏览器以不同的方式实现标准,在这方面,它们实现了不同的对象。例如,IE 实现了一个名为 ActiveXObject 的对象,但在 FireFox 中并非如此。所以我写了一个小测试工具来确定浏览器中是否定义了某些东西。
考虑以下测试一些已知对象(包括 jQuery,因为它不是内置的)。
同样,我已经到了需要帮助的地步:
问题:
给定上面的例子,对象和函数有什么区别?
我是否在 ES/JS 中编写函数或对象?
为什么 Object 是函数而不是对象?
是否有内置对象/函数的层次结构?
可以将内置对象/函数重新定义为完全不同的东西吗?
可以未定义内置对象/函数吗?
如果内置对象/函数本身不支持它们,是否可以为其分配新特性?
如果一个对象是在一个浏览器中定义的,而不是在另一个浏览器中定义的,我该如何弥补这一点?
PS 我不想要与特定实现(JavaScript/JScript)相关的答案,而是与标准(ECMAScript v5)相关的答案。提前致谢!
javascript - javascript中的时间切片是如何发生的?
或 ecmascript 但我想知道它实际上是如何发生的更多地取决于确切的实施。
javascript 在技术上是单线程的。
但如果我做类似的事情
如果我这样做有什么不同吗
一种。
或 B。
因为在第二个中,动画将与 cpu 繁重的功能争夺处理时间,因此动画的外观会受到影响,对吗?
那么 Javascript 是在同步代码块的末尾停止执行,还是在任何随机点切断一个块以允许处理另一个异步运行的块?
javascript - 可以将新关键字添加到 Javascript 中吗?
据我了解,答案是“是的”。但假设这是真的,那怎么可能呢?
它不会违反 WHATWG 的设计原则 #2.1吗?我的意思是,让我们假设关键字foo
是作为关键字添加到 ECMA-262 中的。几年前编写和部署的代码不会foo
完全破坏吗?
也许我错了,答案是否定的。也就是说,我真的别无选择,只能在这里问,因为谷歌搜索“新的 javascript 关键字”或查询的任何变体不出所料会产生大量关于new
javascript 关键字的废话。