2015-09-19 41 views
0

我很难理解为什么我的变量未定义。无法达到属性或方法

的index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <link rel="stylesheet" href="css/style.css"> 
    <title>webPage</title> 
</head> 
<body> 
    <canvas id="myCanvas"></canvas> 
    <script src="JS/const.js"></script> 
    <script src="JS/event.js"></script> 
    <script src="JS/Player.js"></script> 
    <script src="JS/Map.js"></script> 
    <script src="JS/App.js"></script> 
</body> 
</html> 

所以我认为浏览器首先读取播放文件,然后将地图文件和应用文件(纠正我,如果我错了)。

App.js

var app; 

var App = function(){ 
    this.map = new Map(); 
    this.player = new Player(); 
}; 


(function(){ 
    app = new App(); 
})(); 

但是,当我想达到的属性或Map类的用于为例app.map.msg的方法,萤火抛出一个类型错误,并表示该应用程序没有被定义...另外,typeError表示该变量确实存在,但是您尝试执行的操作不适合其包含的值。

所以这意味着我的浏览器承认我的变量,但不是我的应用程序类?

我真的很困惑,所以任何帮助将不胜感激!

+3

当您试图访问app.map.msg?我在代码中看不到它 – Aakash

+0

其实我尝试访问Map.js中的app.map.msg ... –

+0

这不起作用,因为您在加载Map.js之后声明了应用程序,因此发生了错误。 – Aakash

回答

0

确保您正确定义了地图。

这里是一个在小提琴上测试的工作示例。

var app; 
function Map() { 
    this.msg = " hey, i am map" ; 
} 

function Player() { 
    this.msg = " hey, i am player" ; 
} 

var App = function(){ 
    this.map = new Map(); 
    this.player = new Player(); 
}; 


(function(){ 
    app = new App(); 
    document.getElementById ('output') .innerHTML = app.map.msg 
})(); 

http://jsfiddle.net/bdsduv08/