-1

在某些情况下,我喜欢通过在变量名称前加上前缀来按上下文对变量进行分组,例如(示例 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
            };

        };
4

2 回答 2

2

您要查找的词是namespace。而且,在 JavaScript 中,Objects 非常适合它。

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

于 2013-05-25T11:04:19.573 回答
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]);
}

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

于 2013-05-25T11:12:46.863 回答