未捕获的TypeError:数字不是函数:创建dojo类时

时间:2014-01-06 10:50:15

标签: javascript dojo

我正在学习道场

我使用declare创建了一个dojo类,如下所示

require(
["dojo/_base/declare"],function(declare){
    return declare(null,{
      constructor : function(){
          alert("done");
      }
    });
});

这是保存在/learnDojo/root/test.js中 和index.html如下

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<script type="text/javascript">
var dojoConfig = {
    async: false,
    parseOnLoad: false,
    isDebug : true,
    packages:[
        {   name:"base",
            location:"/learnDojo/root"
        }]
};
</script>
<script src="//localhost:8080/dojo1.9.0/dojo/dojo.js" type="text/javascript"></script>
<script type="application/javascript">
require(["base/test","dojo/_base/declare","dojo/domReady!"],function(test,declare){
    var test = new test();
});

</script>
<body>

</body>
</html>

我在/ learnDojo中有index.html,它位于tomcat的webapps文件夹中

当我从浏览器加载时,我收到错误“未捕获的TypeError:数字不是函数”

为什么呢?用于创建类的代码或dojo语法的任何问题

1 个答案:

答案 0 :(得分:1)

定义Dojo模块时,您应该使用define(),而不是require()。所以你的 /learnDojo/root/test.js 文件看起来像这样:

define(
["dojo/_base/declare"],function(declare){
    return declare(null,{
      constructor : function(){
          alert("done");
      }
    });
});

原因是define()实际上会返回您在回调中返回的对象/值(在本例中为return declare(...)语句。但是require()不会返回该值,造成奇怪的错误。