使用对象作为JavaScript中变量的存储

时间:2013-05-25 11:02:09

标签: javascript variables object coding-style

在某些情况下,我喜欢通过为变量名加前缀来按上下文对变量进行分组,例如(例1)

var context_var1 = "value";
var context_var2 = "value";
var context_var3 = "value";
var context_var4 = "value";

现在我要编写一个脚本,然后看看不同的声明样式,例如“only-one-var-keyword-style”(例2)

var context_var1 = "value",
    context_var2 = "value",
    context_var3 = "value",
    context_var4 = "value";

或“逗号优先”(例3)

var context_var1 = "value"
    , context_var2 = "value"
    , context_var3 = "value"
    , context_var4 = "value"
    ;

。但说实话,我真的很喜欢第一个例子。 个人 我认为它是最具可读性的风格。 但是我想到了以下几点:

var context = {
    var1 : "value",
    var2 : "value",
    var3 : "value
};

然后我可以通过

访问这些值
console.log(context.var1);

那你觉得怎么样?将JavaScript对象用作某种变量存储是一个好主意吗?

编辑: 由于它被要求了几次,下面是一个真实世界的例子,我将一些变量存储到一个对象中。

        /**
         *
         * Dom nodes which will be used a couple of times on various places.
         * Grouped into an object by context.
         *
         * @type {DOM nodes}
         *
         */
        var $dom = {
            document : $( document ),
            head : $( "head" ),
            body : $( "body" )
        };


        /**
         *
         * Calculate values based on the document height and
         * window width.
         *
         * @return {Object}
         *
         */
        var gauge = function() {

            var body_fontsize = parseInt($dom.body
                .css( "font-size" )
                .replace( "px", "" ), 10
            );

            var window_width = window.screen.availWidth;
            var document_height = $dom.document.height();
            var bline_count = Math.round( document_height / body_fontsize );
            var vline_count = Math.round( window_width / body_fontsize );

            return {
                width : window_width,
                height : document_height,
                baselines : bline_count,
                vertlines : vline_count
            };

        };

2 个答案:

答案 0 :(得分:2)

您要找的单词是名称空间。并且,在JavaScript中,对象的工作非常棒。

绝对是最常用的命名空间声明语法。

答案 1 :(得分:2)

正如所指出的那样,这就是对象的用途,它们可以为数据命名空间。

然而,使用对象可能有一个缺点:如果您的代码对性能至关重要,那么您应该依赖局部变量 - 尽管聪明的选择通常是在对象中保存(组!)数据然后只是分配它们关键代码中的局部变量。

原因是属性查找比查找局部变量花费的时间更长。这意味着

for (var i = 0; i <= 100000; i++) {
    doSomething(myObj.subObject.anotherObject[i]);
}
如果避免使用常量查找链,

将执行得更快:

var actuallyNeeded = myObj.subObject.anotherObject;
for (var i = 0; i <= 100000; i++) {
    doSomething(actuallyNeeded[i]);
}

只要您的代码在性能方面不重要,当然这是不必要的。