问题标签 [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.
javascript - PhoneGap-App 的正确回调和引用
我想创建一个包含多个数据库表的 PhoneGap-Application,这些表将被解析为 Javascript-Objects,所以我编写了以下代码。
问题是 queryDB 方法中的“this”是对方法本身的引用,而不是对 Object 的引用。有谁知道我如何参考正确的方法?
谢谢!
actionscript-3 - 对象树遍历 - afl 用于应用程序内存泄漏检测
我正在尝试遍历 AFL (adobe flash lite) 引擎中的对象树,以检查事件驱动应用程序 (AS3) 中是否存在内存泄漏。这个想法是在事件处理之前和之后获取对象树转储,并检查对象树转储差异是否存在内存泄漏。
我相信 MMgc 是 AFL 的 GC,我无法获得对象树的转储,谁能帮我指出在代码中我可以在tamarin中获取活动对象信息的位置。
javascript - Object.create 和继承
以下示例中生成的对象之间有什么区别:
我想oConstr
并且oConstr2
将在EventEmitter
构造函数中设置任何属性,但是还有其他有意义的区别吗?
javascript - Array.prototype.forEach 替代实现参数
在开发我最新的 Web 应用程序并需要使用该Array.forEach
功能时,我不断发现以下代码用于添加对没有内置该功能的旧浏览器的支持。
我完全理解代码的作用以及它是如何工作的,但我总是看到它被复制,形式thisp
参数被注释掉,而是被设置为局部变量arguments[1]
。
我想知道是否有人知道为什么要进行此更改,因为据我所知,代码thisp
作为形式参数而不是变量可以正常工作?
javascript - “锁定” JavaScript 对象有什么性能优势?
JavaScript 1.8.5 (ECMAScript 5) 添加了一些有趣的方法来防止将来对传递的对象进行修改,并具有不同程度的彻底性:
大概这些的主要目的是捕捉错误:如果您知道在某个点之后不想修改对象,则可以将其锁定,以便以后不经意地尝试修改它时会引发错误。(前提是你已经这样做"use strict";
了。)
我的问题:在 V8 等现代 JS 引擎中,使用上述方法锁定对象是否有任何性能优势(例如,更快的属性查找、减少的内存占用)?
(另请参阅John Resig 的精彩解释——不过没有提及性能。)
javascript - 我们必须注意 JavaScript 的“严格模式”吗?
阅读 ECMAScript 5 的严格模式后,我了解到:
某些语言功能如此普遍,以至于执行运行时检查会产生相当大的性能成本。一些严格模式调整,加上要求用户提交的 JavaScript 是严格模式代码并以某种方式调用,大大减少了对这些运行时检查的需求。
其中一些调整可能是:
- 永远不要在/方法中使用
null
/undefined
作为第一个参数。call
apply
- 不要在函数内创建新的全局变量。
问题:
是否有一些以严格模式编写的 JavaScript 框架?所以我们可以相信我们的“严格”代码不会被浪费?
strict mode
无论如何我都应该开始关注吗?我的意思是它被盲目地采用为一种好的做法吗?
javascript - 在哪里可以找到包含 ECMAScript 5 函数的参考表?
我在哪里可以找到一份包含所有 ECMAScript 5 数据类型和函数的 1-2 页参考表?
例如:Array.prototype.forEach、Date.now 等的语法和简短说明。
javascript - 访问器描述符:如何在实践中使用“get”和“set”?
我不确定我是否做对了。
这个例子直接来自 MDN(Mozilla 开发者网络):
发生的事情是 - 它创建了一个名为 bValue 的全局变量,但没有完成。我知道这个例子只演示了使用,因此如果它创建一个全局变量是可以的。但是如果我要在应用程序中使用它,我会稍微修改它,添加this
关键字:
现在,该对象o
将具有 property b
,同时,它还将具有另一个 property bValue
。用户(程序员)将只接触到“b”而不接触“bValue”,尽管他仍然可以直接访问 bValue——我不知道如何防止它。
我知道属性b
和属性bValue
可能并不总是相同,而是b
取决于值,bValue
因为 getter 和 setter 允许我们在将值分配给之前对 bValue 进行预处理b
。
主要问题是,我做对了吗?或者我在这里错过了什么?
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 的好方法?有更好的方法吗?
javascript - 获取对象键的数组
我想以 jQuery 或纯 JavaScript 的形式将 JavaScript 对象的键作为数组获取。
还有比这更简洁的方法吗?