Dojo this.inherit抛出' Uncaught TypeError:无法读取属性' callee'未定义的'

时间:2015-07-31 00:01:30

标签: dojo

为了便于使用非标准url方案的JsonRest存储,我试图继承JsonRest并覆盖_getTarget(id)函数。这是我继承的javascript类的样子:

define([
    "dojo/_base/declare", 
    "dojo/store/JsonRest",
        ],
function(declare, JsonRest) {
    return declare(JsonRest, {
        _getTarget: function(id){
            var target = this.target;
            if(typeof id != "undefined"){
                if(target.indexOf("{id}") != -1) {
                    //use template
                    target = target.replace("{id}", id);
                } else {
                    target = this.inherited(id);
                }
            }
            return target;
        },
    });
});

然而,行target = this.inherited(id);会返回错误:Uncaught TypeError: Cannot read property 'callee' of undefined

我查看了文档,我认为我做得对: Intel syntax

调用基类_getTarget(id)函数的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

如果你仔细查看你链接的文档部分,你应该从字面上arguments对象传递给this.inherited - 那就是包含callee的内容它正在查找的属性(并且将包括id和任何其他参数,以便传递给超类)。

在几个段落中,文档还解释了如何使用除了传递相同参数之外的参数调用this.inherited,如果需要:您可以在之后传递自定义参数 {{ 1}},即argumentsthis.inherited(arguments, [ ... ])始终必须是第一位。