问题标签 [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 投票
1 回答
223 浏览

javascript - PhoneGap-App 的正确回调和引用

我想创建一个包含多个数据库表的 PhoneGap-Application,这些表将被解析为 Javascript-Objects,所以我编写了以下代码。

问题是 queryDB 方法中的“this”是对方法本身的引用,而不是对 Object 的引用。有谁知道我如何参考正确的方法?

谢谢!

0 投票
1 回答
219 浏览

actionscript-3 - 对象树遍历 - afl 用于应用程序内存泄漏检测

我正在尝试遍历 AFL (adobe flash lite) 引擎中的对象树,以检查事件驱动应用程序 (AS3) 中是否存在内存泄漏。这个想法是在事件处理之前和之后获取对象树转储,并检查对象树转储差异是否存在内存泄漏。

我相信 MMgc 是 AFL 的 GC,我无法获得对象树的转储,谁能帮我指出在代码中我可以在tamarin中获取活动对象信息的位置。

0 投票
1 回答
329 浏览

javascript - Object.create 和继承

以下示例中生成的对象之间有什么区别:

我想oConstr并且oConstr2将在EventEmitter构造函数中设置任何属性,但是还有其他有意义的区别吗?

0 投票
2 回答
1195 浏览

javascript - Array.prototype.forEach 替代实现参数

在开发我最新的 Web 应用程序并需要使用该Array.forEach功能时,我不断发现以下代码用于添加对没有内置该功能的旧浏览器的支持。

我完全理解代码的作用以及它是如何工作的,但我总是看到它被复制,形式thisp参数被注释掉,而是被设置为局部变量arguments[1]

我想知道是否有人知道为什么要进行此更改,因为据我所知,代码thisp作为形式参数而不是变量可以正常工作?

0 投票
7 回答
18967 浏览

javascript - “锁定” JavaScript 对象有什么性能优势?

JavaScript 1.8.5 (ECMAScript 5) 添加了一些有趣的方法来防止将来对传递的对象进行修改,并具有不同程度的彻底性:

大概这些的主要目的是捕捉错误:如果您知道在某个点之后不想修改对象,则可以将其锁定,以便以后不经意地尝试修改它时会引发错误。(前提是你已经这样做"use strict";了。)

我的问题:在 V8 等现代 JS 引擎中,使用上述方法锁定对象是否有任何性能优势(例如,更快的属性查找、减少的内存占用)?

(另请参阅John Resig 的精彩解释——不过没有提及性能。)

0 投票
2 回答
621 浏览

javascript - 我们必须注意 JavaScript 的“严格模式”吗?

阅读 ECMAScript 5 的严格模式后,我了解到:

某些语言功能如此普遍,以至于执行运行时检查会产生相当大的性能成本。一些严格模式调整,加上要求用户提交的 JavaScript 是严格模式代码并以某种方式调用,大大减少了对这些运行时检查的需求。

其中一些调整可能是:

  • 永远不要在/方法中使用null/undefined作为第一个参数。callapply
  • 不要在函数内创建新的全局变量。

问题:

  1. 是否有一些以严格模式编写的 JavaScript 框架?所以我们可以相信我们的“严格”代码不会被浪费?

  2. strict mode无论如何我都应该开始关注吗?我的意思是它被盲目地采用为一种好的做法吗?

0 投票
3 回答
2140 浏览

javascript - 在哪里可以找到包含 ECMAScript 5 函数的参考表?

我在哪里可以找到一份包含所有 ECMAScript 5 数据类型和函数的 1-2 页参考表?

例如:Array.prototype.forEach、Date.now 等的语法和简短说明。

0 投票
2 回答
2431 浏览

javascript - 访问器描述符:如何在实践中使用“get”和“set”?

我不确定我是否做对了。

这个例子直接来自 MDN(Mozilla 开发者网络):

发生的事情是 - 它创建了一个名为 bValue 的全局变量,但没有完成。我知道这个例子只演示了使用,因此如果它创建一个全局变量是可以的。但是如果我要在应用程序中使用它,我会稍微修改它,添加this关键字:

现在,该对象o将具有 property b,同时,它还将具有另一个 property bValue。用户(程序员)将只接触到“b”而不接触“bValue”,尽管他仍然可以直接访问 bValue——我不知道如何防止它。

我知道属性b和属性bValue可能并不总是相同,而是b取决于值,bValue因为 getter 和 setter 允许我们在将值分配给之前对 bValue 进行预处理b

主要问题是,我做对了吗?或者我在这里错过了什么?

0 投票
3 回答
15313 浏览

javascript - 如何提供 ECMAScript 5 (ES 5)-shim?

ECMAScript 第五版(2009 年 12 月发布)引入了一系列新方法(详见此表)。但是,仍然有一些较旧的浏览器没有实现这些新方法。

幸运的是,有一个方便的脚本(用 JavaScript 编写) - ES5-shim - 在不存在这些方法的环境中手动实现这些方法。

但是,我不确定如何提供 ES5-shim ......我是否应该将其“提供”给所有浏览器,如下所示:

或者我应该包括一个检查,以便只“打扰”那些真正需要它的浏览器,就像这样:

(我Function.prototype.bind用来检查浏览器是否实现了所有新的 ECMAScript 5 方法。根据我上面链接的兼容性表,bind它是实现 ECMAScript 5 方法的“最后堡垒”。)

当然,要使这个 shim 生效,它必须在所有其他脚本之前执行,这意味着我们希望在页面的早期包含上述 SCRIPT 元素(在 HEAD 中,在所有其他 SCRIPT 元素之前)。

那么,第二个示例是否是向浏览器提供 ECMAScript 5-shim 的好方法?有更好的方法吗?

0 投票
8 回答
495587 浏览

javascript - 获取对象键的数组

我想以 jQuery 或纯 JavaScript 的形式将 JavaScript 对象的键作为数组获取。

还有比这更简洁的方法吗?