我应该何时初始化javascript属性
when should i initialize javascript properties?
我是javascript的新手,我一直在想一些事情。有没有一种可以接受的方式来列出我的对象属性?
具体来说,我一直在编写代码,其中创建对象时没有任何初始属性,并在代码运行时添加它们。
的例子:
Game = {};
Game.x = 0;
...Code code code
Game.thing = function () {
Game.variable = 30;
}
你可以看到,我的游戏对象只是慢慢收集属性,因为我的代码运行。这可以接受吗?或者我应该列出所有我将在游戏对象初始化开始时使用的属性?谢谢。
你可以这样做:
var Game = { // DON'T FORGET var !!!!!
x: 0,
something: some_value,
thing: function() {
this.variable = 30;
}
};
你在代码中所做的并没有错(除了不要忘记var
!!)。这是风格和意图的问题。上面的代码(花括号中的部分)被称为"对象字面量",它是一种动态创建对象作为JavaScript值的方法。它非常有用,但并不一定比其他构建对象的方法更好。
编辑
请注意,根据本文,当一个对象(至少在V8中,尽管我怀疑其他运行时可能有类似的行为)开始看起来像被用作映射时,那么它的内部就会为此目的进行优化。在此之后,对象上的for ... in
循环将不再是优化的候选对象。你可以(我认为)仍然使用Object.keys()
来做这样的迭代,总的来说,这可能是一个净收益,但它可能是经历了很多属性创建的对象落入这种情况。
这取决于您的应用程序。如果在创建对象时已经有了想要放入对象中的所有数据,请使用对象文字:
var Game = {
x: 0,
thing = function () {
this.variable = 30;
}
}
然而,在某些情况下,您可能希望在创建时向新创建的对象添加内容。这在使用名称空间时很常见(看起来您正在尝试这样做)。
我会这样开头:
var Game = Game || {};
这样,你可以确保你不会与另一个物体碰撞。然后从那里开始,通过添加属性和方法。一种常见的方法是创建一个闭包,并从该闭包中分配新方法。
(function() {
var foo = function () {
... stuff ...
}
Game.foo = foo;
})();
这样,您就不会冒意外创建任何全局变量的风险。:)
相关文章:
- 保存具有相同属性 JavaScript 的元素上的值
- DOM 元素上的空样式属性:JavaScript
- 基于一个属性Javascript检索多个对象
- xml获取属性javascript不会;无法处理childNodes
- 当输入填充了必需的属性javascript/html/css时,如何更改焦点颜色
- 如何处理未定义属性的未定义属性 javascript 类型错误
- 向嵌套对象添加属性 - Javascript
- 属性 Javascript 的访问属性
- 更改链中的 css 属性 - JavaScript
- 更改属性 Javascript 方式的值
- 如何从 url 解析 xml 获取属性 javascript
- 语法错误:缺少:在属性 javascript 之后
- 创建 if 条件基于 CSS 属性 -- JavaScript
- 访问节点的属性javascript二进制搜索树
- 访问父函数属性Javascript
- 为什么未定义此对象的属性?Javascript
- 访问私有属性Javascript OOP
- 访问数组中的属性?(Javascript)
- 动态添加参数作为对象的属性-JavaScript
- 冲突/方法/属性Javascript错误