我在JavaScript中使用了Utils类。以下是该JavaScript的源代码。
function UtilityMethod(){
this.testMethod=function(){
alert("Test method is called");
}
}
上面的代码包含在Utils.js文件中。现在我需要在我的HTML文件中创建一个UtilityMethod实例。我在我的HTML文件中引用了Utils.js。以下是我的HTML代码。
<html>
<head>
<title> New Document </title>
<script type="text/javascript" src="/dojo/dojo.js"></script>
<script type="text/javascript" src="/js/Utils.js"></script>
</head>
<body>
<script type="text/javascript">
dojo.addOnLoad(function(){
var Utils = new UtilityMethod();
});
</script>
<a href="javascript:void(0);" onclick="Utils.testMethod()">TestMethodCall</a>
</body>
</html>
但是当我点击HyperLink时,它给我的错误未定义Utils。但即使我在页面加载后点击链接,为什么它仍然给出错误? 我需要在dojo.addOnLoad()方法中包含实例创建。您能否建议是否有其他简单的替代方案?
我知道我们可以使用dojo.connect()来做到这一点,但还有另一种方法可以做到这一点。如果我们使用dojo.connect,我们必须对大量代码进行更改。
答案 0 :(得分:0)
这是因为Utils是在一个函数中创建的;它不会在功能之外可用。可以找到对此范围行为的一个很好的解释here。为了使其工作,您需要告诉浏览器Utils是一个全局变量:
window.Utils = new UtilityMethod();
现在,Utils被设置在窗口对象上,因此可以在任何地方访问它(窗口对象的一个很好的功能是它的属性可以在没有window.
前置的情况下使用,所以你仍然可以使用Utils.testMethod
正常)