我在尝试使用javascript文件中的函数时遇到了问题,我在启动页面时已将其包含在另一个文件中。
在文件design.js中我想做var x = new canvasManager(); canvasManager在canvasManager.js中定义。
然而,当我尝试这个时,我得到一些'未捕获的类型错误未定义不是函数'。是什么赋予了?下面是我输入浏览器的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 :(得分:5)
canvasManager
中的new canvasManager()
名称是指canvasManager
中的var canvasManager
,而不是您在其他JS文件中定义的canvasManager
。 canvasManager
中initializeDesign()
的声明会影响另一个声明。
答案 1 :(得分:0)
在以下位置更改变量名称:
var canvasManager = new canvasManager();
当您定义该局部变量时,它会使用相同的名称取代全局函数,以便new canvasManager()
仅引用您的局部变量而不是全局函数。因此,由于局部变量的值仍未定义,因此您会看到错误。
将其更改为:
var theCanvasManager = new canvasManager();
或类似的东西,它应该可以正常工作。
虽然我不推荐这个(因为我认为它不是超级可读代码并且可能导致其他意外错误),你也可以这样做:
var canvasManager = new window.canvasManager();
这里明确指的是全局范围的函数,因此它与局部变量不同。