javascript访问静态类的成员

时间:2012-01-25 08:51:47

标签: javascript

我的页面部分有以下内容:

<head>
    <link rel='stylesheet' href='style.css' />
    <script language='javascript' src='scripts/jquery-1.7.1.min.js'></script>
    <script language='javascript' src='scripts/NumberMaze.js'></script>
    <script language='javascript' src='scripts/GameConfig.js'></script>
    <script language='javascript' src='scripts/UIManager.js'></script>
    <script>
        $(document).ready(function() {
            var game = new NumberMaze();
        });
    </script>
</head>

GameConfig.js包含:

(function(undefined) {
    NumberMaze.GameConfig           =   function() {
        return {
            minCanvasWidth          :   320,
            minCanvasHeight         :   240,
            maxCanvasWidth          :   640,
            maxCanvasHeight         :   480,
        };
    };
})();

NumberMaze.js包含:

(function($, undefined) {
    NumberMaze          =   function() {
        console.log(NumberMaze.GameConfig.minCanvasWidth);
        console.log(NumberMaze.GameConfig);
    };
})(jQuery);

对于NumberMaze.js中的日志,我得到以下输出。如何访问minCanvasWidth的值。我的代码怎么了?

undefined
function () {
        return {
            minCanvasWidth          :   320,
            minCanvasHeight         :   240,
            maxCanvasWidth          :   640,
            maxCanvasHeight         :   480,
        };
    }

1 个答案:

答案 0 :(得分:3)

如您的日志所示,您在NumberMaze.GameConfig中存储了功能;不是带有数据的实际对象。

你必须调用函数来获取对象,因为函数return是对象:

console.log(NumberMaze.GameConfig().minCanvasWidth);

但是,为什么不直接设置对象而不是将其包装在(看似无用的)函数中?

(function(undefined) {
    NumberMaze.GameConfig = {
        minCanvasWidth    :   320,
        minCanvasHeight   :   240,
        maxCanvasWidth    :   640,
        maxCanvasHeight   :   480,
    };
})();

这样,你的两个日志都能正常工作。