Javascript 在dojo中定义自定义类

Javascript 在dojo中定义自定义类,javascript,dojo,Javascript,Dojo,我试图定义一个类,但当我在代码中引用它时,我得到了一个错误 错误:declare custom.place:mixin#0不是可调用的构造函数 define(['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/place"], function(dojo, dijit, declare, place) { return declare("custom.place", [place], { newMethod:

我试图定义一个类,但当我在代码中引用它时,我得到了一个错误

错误:declare custom.place:mixin#0不是可调用的构造函数

define(['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/place"],
   function(dojo, dijit, declare, place) {

     return declare("custom.place", [place], {
       newMethod: function() { }
   });
 })
这是行不通的。但是下面的代码可以正常工作

define(['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/MenuItem"],
   function(dojo, dijit, declare, MenuItem) {

   return declare("custom.item", [MenuItem], {
       newMethod: function() { }
   });
})

感谢您的帮助。谢谢。

Dojo类只能扩展其他Dojo类。不是Dojo类;它只是一个具有某些函数属性的对象

require(["dijit/place", "dijit/MenuItem"], function(place, MenuItem) {
  console.log(typeof place);
  console.log(typeof MenuItem);
});
上述代码给出了控制台输出:

LOG: object 
LOG: function 
如果您想要一个包含place实用程序函数和一些额外函数的对象,您可以创建自己的版本,如下所示:

define(["dojo/_base/lang", "dijit/place"], function(lang, place) {
  var newMethods = {
    foo : function () {}
  };

  return lang.mixin(newMethods, place);
});

如果您想将place的功能混合到Dojo类中,可以使用,但我不确定您为什么要这样做。

谢谢!为了澄清,我最终想将一个参数改为
dijit.place.\u place()
,一个私有函数,但是一个方面看不到这个函数。