TypeError调用原型函数

时间:2015-05-05 16:51:39

标签: javascript jquery prototype typeerror

我正在尝试制作我的第一个非常小的框架/库。

我试着在SO上找到一个答案很长一段时间,但是我自己无法弄明白:( 该库工作正常,除非我在双击后尝试调用函数。处理点击的功能是在同一个原型上调用另一个。

所以这里是代码(它有点jQuery就像设计一样不能调用new运算符):

;(function(global, $){
    "use strict";
    var iSOT = function(divSelector, options){
        return new iSOT.init(divSelector, options);
    }

接下来是iSOT.init的原型:

iSOT.prototype = {
    resetScale: function() {
        diagramm.zoomed = false;
        this.updateScale(diagramm.xAxis.initialRange);
    },

    updateScale: function(range) {
        // some calculations here and then updating the DOM
    },

    doubleClick: function(event) {
        var mouse = {}

        // some not important calculation stuff
        var positionHour = 12.42 // this value gets calculated in the lines before
        if(!diagramm.zoomed) {
            diagramm.zoomed = true;
            this.updateScale([Math.round(positionHour)-6, Math.round(positionHour)+6]);
        } else {
            this.resetScale();
        }
    }

其次是iSOT.init部分

iSOT.init = function(divSelector, options) {
    // lot of default settings here
    this.theSVG.on("dblclick", this.doubleClick);
    // more unimportant stuff
    this.updateScale();
};

最后但并非最不重要的是设置Prototype并将iSOT置于全局上下文

    iSOT.init.prototype = iSOT.prototype;
    global.iSOT = iSOT;
}(window, jQuery));

如果我双击我得到“Uncaught TypeError:this.updateScale不是一个函数”(我不知道为什么)

您的任何专家都可以看一下,然后向我解释。

感谢您的帮助。

更新

我可能正在寻找问题的轨道上。 doubleClick函数中的这个实际上是被单击的DOM元素。

0 个答案:

没有答案