Object.defineObject,重用对象或对象文字表示法
Object.defineObject, reuse object or object literal notation
var obj = {};
Object.defineProperty(this, 'foo', void (obj.value = 0) || obj);
Object.defineProperty(this, 'foo2', void (obj.value = 1) || obj);
与。
Object.defineProperty(this, 'foo', {value:0});
Object.defineProperty(this, 'foo2', {value:1});
两者似乎都运行得一样快,但前者对 gc 来说会更好吗?
选项
B 创建两个临时对象,而选项 A 仅创建一个。然而,选项 B 中的临时对象可以立即获得 GC,并且理论上可以比选项 A 中的临时对象更容易优化,后者一直存在到您声明它var
的块结束。
在性能上几乎没有实际差异;在这个级别摆弄是过早的优化(通常不可能在所有浏览器中选择最快的版本)。你应该选择选项 B,它是更具可读性和惯用性的 JavaScript。
FWIW 对我来说(在 Ubuntu 13.04 64 位上),在五次尝试中测试 100k 运行会导致在 Firefox 或 Chrome 中始终保持更快(即随机噪声大于性能的任何差异)。
相关文章:
- 如何计算对象文字中的键
- 对象文字方法上的Javascript绑定不起作用
- 可以使用“;创建“;作为JavaScript对象文字中的属性名称
- 这两种不同的创建对象文字的方法有什么区别
- Javascript对象文字,POST问题
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何使用'这个“;对象文字中的关键字
- JS对象文字中的方法和子方法
- 向JavaScript对象文字添加数据
- Javascript对象文字,如何使用“this”来引用对象中的变量
- 如何将xml文件转换为javascript中的对象文字
- 什么's对象文字中带引号和不带引号的键之间的区别
- 使用窗口对象练习我的对象文字函数
- 对象文字数据表中的 Google 可视化样式角色
- 如何创建作用域的动态、基于实例的对象文字
- Javascript将字符串中的对象转换为对象文字
- 我需要一些帮助来理解JavaScript中的对象文字函数
- 为什么动画设置加载在TweenMax中的两个单独的对象文字中
- 对象文字语法怪异
- 对象文字中的类