【发布时间】:2013-07-25 14:19:34
【问题描述】:
我是一名尝试学习 JavaScript 精神的 Java 开发人员。
这两种在 JavaScript 中创建静态对象的方法是否在任何非语法方面都不同?从 JavaScript 程序员的角度来看,哪种方法更容易接受?
方法 A:
var obj = {};
obj.field1 = /* some expression */;
obj.field2 = /* some expression */;
方法 B:
var obj = {
field1: /* some expression */,
field2: /* some expression */
};
【问题讨论】:
-
我倾向于使用方法 B。当您需要访问对象字面量时,方法 A 很好。例如,如果你想定义
field2基于field1;你不能在对象字面量初始化中完全做到这一点。 -
另一种类似但效果不同的方式是在构造函数上使用
new运算符:var obj = new (function Object() {this.field1 = /* some expression */; this.field2 = /* some expression */; var privateProperty = "somevalue"; this.field3 = this.field1+privateProperty; })();这允许您在需要时隐藏一些属性。 -
另一种方式是使用:
Object.createdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript static static-members object-literal