javascript访问静态类的成员

javascript accessing member of a static class

本文关键字:成员 静态类 访问 javascript      更新时间:2023-09-26

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

<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,
        };
    }

如日志所示,NumberMaze.GameConfig中存储了一个函数;而不是带有数据的实际对象。

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

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

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

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

这样,您的两个日志都可以正常工作。