2012-01-25 44 views
1

我已经在我的网页的部分如下: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, 
     }; 
    } 

回答

3

当你的日志显示,你有一个功能存储在NumberMaze.GameConfig;而不是数据的实际对象。

你必须通话函数来获取对象,因为该功能return S的物:

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

但是,为什么不直接设置对象,而不是它包装内(看似无用)的功能?

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

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

+0

aww .. GameConfig是一个函数。正确.. thx指出它:) – saiy2k