2012-06-19 60 views
0

我在尝试在启动页面时在另一个文件中包含的JavaScript文件中使用某个函数时遇到了问题。javascript不包含文件?

在文件design.js中我想做var x = new canvasManager();而canvasManager在canvasManager.js中定义。

但是当我尝试这个时,我得到了一些未捕获的类型错误undefined不是函数。是什么赋予了?下面是我的HTML文件中的相关代码,我进入浏览器:

<link rel="stylesheet" type="text/css" href="styles.css" /> 
<script type="text/javascript" src="jquery/jquery.js"></script> 
<script type="text/javascript" src="jquery/kinetic.js"></script> 

<script type="text/javascript" src="designManager.js"></script> 
<script type="text/javascript" src="canvasManager.js"></script> 
<script type="text/javascript" src="gateManager.js"></script> 
<script type="text/javascript" src="wireManager.js"></script> 
<script type="text/javascript" src="toolbarManager.js"></script> 
<script type="text/javascript" src="objectDrawing.js"></script> 

<script type="text/javascript" src="util/mouseEventManager.js"></script> 
<script type="text/javascript" src="util/hotkeyManager.js"></script> 
<script type="text/javascript" src="util/htmlUtils.js"></script> 
<script type="text/javascript" src="design.js"></script> 


<script type="text/javascript"> 
    $(document).ready(function(){ 
     initializeDesign(); 
    }); 
</script> 

//在design.js ...

function initializeDesign() { 

    var canvasManager = new canvasManager(); 

} 

感谢您的任何帮助。

+0

canvasManager.js是什么样子? – chrisvillanueva

+0

有什么办法可以整合这些JS文件吗? – Charlie

+0

可能是拼写错误。 –

回答

5

canvasManagernew canvasManager()是指canvasManagervar canvasManager名称,而不是你在其他JS文件中定义的canvasManager。 的声明在initializeDesign()中阴影另一个声明。

+0

我的兄弟们!很好的接收 – JDS

0

在改变你的变量名:

var canvasManager = new canvasManager(); 

当你定义一个局部变量,它取代了全局函数具有相同的名称,这样new canvasManager()只是指局部变量不是全局函数。因此,由于局部变量的值仍未定义,因此会出现您看到的错误。

将其更改为:

var theCanvasManager = new canvasManager(); 

或类似的东西,它应该工作的罚款。


虽然我不会推荐这(因为我认为这是不是超级可读的代码,并可能导致其他意外的错误),你也可以这样做:

var canvasManager = new window.canvasManager(); 

这里你明确提及到全局范围的函数,因此它与局部变量不同。