我试图创建一个继承一个类的类。
在这个类中,我想创建2个对象,它们将被传递给父类的构造函数。
为此,我必须使用手动构造函数链接并调用“inherited”(请参见http://dojotoolkit.org/reference-guide/1.7/dojo/declare.html#manual-constructor-chaining)
我的问题是我不能正确地传递参数给继承的方法。当我使用下面的代码时:
define([ "dojo/_base/declare", "dojo/store/JsonRest", "dojo/store/Memory", "dojo/store/Cache", "dojo/store/Observable"],
function(declare, JsonRest, Memory, Cache, Observable)
{
var userStore;
return declare("app.UserStore", [Cache],
{
"-chains-":
{
constructor: "manual"
},
constructor: function()
{
this.masterStore = new JsonRest({
target: "/User/json",
idProperty: "name"
});
this.cacheStore = new Memory({ idProperty: "name" });
this.inherited([this.masterStore, this.cacheStore]);
}
});
});
我得到了一个在declare.js中未定义的arg.callee。
当我把“arguments”作为参数传递给inherited时,被调用方就被定义了。是否可以动态地向arguments对象添加更多的参数?
如果没有,我如何在这个构造函数中用动态创建的对象调用父对象呢?
谢谢你,谢谢
2条答案
按热度按时间mwg9r5ms1#
this.inherited
的第一个参数必须始终是arguments
,这样dojo.declare
才能计算出基于arguments.callee
的超类方法。如果你想发送不同的参数给超类方法,那么你应该有一个数组作为this.inherited
的第二个参数。t确认这对构造函数有效,但我会尝试以下操作:我很想知道它是否有效。
oxcyiej72#
Dojo[1]的最新版本允许将对当前执行函数的引用作为第一个参数传递给
this.inherited
,以使其能够在严格模式下使用。作为一个副作用,第二个参数实际上可以是一个数组(即使来自非严格代码):
[1]1.12或更高版本,如果我没记错的话。