问题标签 [ecmascript-5]

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 回答
688 浏览

javascript - 任何写出javascript的高级语言?

我正在寻找一种能写出 javascript 的高级语言。换句话说,这种语言与 javascript 的关系类似于 C++ 与汇编代码的关系。

这种高级语言的要求是类型安全、易于重构、能够拥有类、继承等(有点像 java/C#/vb.net)。

优点是我可以用这种更高级的语言编写代码,而不必依赖“hacks”来将继承带到 javascript。此外,我不必进行任何运行时类型/鸭子检查,因为高级语言将施加类型安全限制,并且生成的 javascript 只会“完成工作”。

与在汇编中编码相比,使用 C++ 编码时我们可以拥有的任何其他优势将是其他优势。

我实际上打算自己尝试编写这种高级语言,但它的工作量太大,我想知道是否有人实际上已经做过类似的事情。

0 投票
2 回答
1495 浏览

javascript - 为什么我们使用 `Boy.prototype = new Human;` 来模拟继承?

我不明白为什么每个人都在使用Boy.prototype = new Human;模拟继承。看,我们要的是A的函数对吗?我们可以在不实例化新 A 的情况下做到这一点(事实上,实例化新 A 确实会给我们带来不希望的结果,因为我们实际上正在运行我们不想要的实例化函数)

那么这不是更好的解决方案吗?

假设我们是如此特殊并且不仅想要 Human.prototype 中的可枚举属性,我们仍然可以通过在原型链上使用Object.getOwnPropertyNames和调用它来实现它,而原型链反过来又可以通过Object.getPrototypeOf.

Boy.prototype = new Human;那么当我们有更好的选择时,模拟继承到底有什么好处呢?

0 投票
3 回答
186 浏览

javascript - 是否有实例共享相同的功能但同时具有私有变量?

我有这段代码:

现在 ._name 不是“私人的”。我想将 ._name 设为“私有”,但同时我不希望为 Human 的每个实例创建额外的函数(换句话说,tom.Shout 必须 === 到 john.Shout),因为为每个实例都很好..不必要(好的题外话 - 我们可以在另一个线程上讨论这个)

我的结论是,我想要实现的目标(让 ._name 为“私有”,同时拥有 ._name tom.Shout===john.Shout)是不可能的。

但我只想在得出任何结论之前有 200% 的把握。

(只要满足要求,我欢迎任何 hack,即不为每个实例创建附加功能)

如果我们必须创建额外的函数来进行范围界定,那很好,但这个数字应该是一个固定的数字,并且这个数字不应该随着 Human 的每个额外实例而增加。

0 投票
1 回答
2051 浏览

javascript - JavaScript:测试未定义值的变量;测试对象是否为数组

  1. typeof value === "undefined"和有区别value === undefined吗?

  2. 为什么Array.isArray()在 ECMAScript 5 中需要 JavaScript?我不能打电话value instanceof Array来确定给定的变量是否是一个数组吗?

0 投票
1 回答
3618 浏览

javascript - Javascript 在浏览器中获取和设置可用性

哪些浏览器不支持对象原型的 get 和 set 方法?我相信这是 ES5 的一个特性,我知道它可以在 Chrome 中运行,但我想知道它是否可以安全地用于 ajax 应用程序。这是一个例子:

0 投票
3 回答
52633 浏览

javascript - 我可以为特定功能禁用 ECMAscript 严格模式吗?

我在 MDC 或 ECMAscript 规范上找不到任何关于我的问题的信息。可能有人知道一个更“hacky”的方法来解决这个问题。

我正在调用"use strict"我环境中的每个 javascript 文件。我所有的文件都是这样开始的

现在,我有一个处理错误的自定义函数。该函数使用该.caller属性来提供上下文堆栈跟踪。看起来像这样:

但是当然,在严格模式下.caller是一个不可删除的道具,在检索时会抛出。所以我的问题是,有没有人知道如何禁用严格的“功能明智”?

"use strict";被调用后被所有函数继承。现在我们可以通过在特定函数"use strict";的顶部调用来在特定函数中使用严格模式,但是有没有办法实现相反的效果?

0 投票
1 回答
2317 浏览

javascript - JavaScript:严格模式和匿名函数

几乎我所有的 JS 文件都包装在匿名函数中。如果我"use strict";在匿名函数之外包含,严格模式是否仍适用于匿名函数?

例如,下面脚本中的匿名函数内部是否应用了严格模式:

0 投票
2 回答
178 浏览

javascript - 让简单的搜索算法更优雅

这循环遍历数组并将找到的第一个函数转换为组合函数。

我讨厌那个found = false变量/计数器。我该如何摆脱它?

作为算法。

更新

使用 for 循环

_.map, _, _.isFunction,_.compose

0 投票
1 回答
209 浏览

javascript - EcmaScript5 功能

我对 ES3 有相当的了解,但我对 ES5 的特性并不是很了解。我 - 或多或少 - 知道:

  • Object.create(),Object.freeze()
  • "use strict"
  • getter 和 setter
  • Array.prototype的方法map(), filter(), every(),some()
  • JSON.parse()

但我确定我错过了其他好东西。此外,我不知道上述所有细节:例如,我不确定"use strict".

是否有一个很好的资源可以学习 ES5 的所有细节,特别是 ES3,除了阅读最终的最终最终草案吗?

0 投票
1 回答
4523 浏览

javascript - v8 何时实现 ECMAScript 5?

我注意到v8在 ECMAScript 第 5 版的问题上相当沉默。

V8 实现 ECMA-262 第 3 版中指定的 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 和 Linux 系统上运行。

即使是错误跟踪器似乎也很安静......

一个错误上,您可以找到一个提交者写这个:

V8 是 ECMAScript 的实现,而不是 JavaScript。后者是 Mozilla 制作的 ECMAScript 的非标准化扩展。V8 旨在与 JSC 插件兼容,JSC 是 WebKit/Safari 中的 ECMAScript 实现。因此,它实现了许多也在 JSC 中的 ECMAScript 的非标准扩展,其中大部分也是 Mozilla 的 JavaScript 语言。没有计划将 JSC 中没有的非标准特性添加到 V8。

有趣的是,他在 2010 年 10 月 8 日写道,当时 ECMAScript 5 于 2009 年 12 月发布,两个月前 Javascript 1.8.5——ECMAScript 5 的超集——发布。

所以问题仍然存在,谷歌什么时候会更新 v8 以在 ECMAScript 第 5 版上运行?是否有升级到 ECMAScript 最新标准化的计划?