未捕获的TypeError:不是函数,但函数存在

时间:2015-05-27 15:45:38

标签: javascript php jquery

我的js文件中有以下内容:

var Field_File = function( _ )
{
    var _objects = null;

    var Init = function( instance, json )
    {
         // load _objects
    }

    var ImgLoad = function( elem, type )
    {
        //do things with _objects
    }
}

现在在我的PHP中,我得到了:

<img id="file_uploader2_button" src="http://localhost/img/icons/up.png" onload="Field_File.ImgLoad(this, 'img');">

我已经验证了JS正确加载到我的页面中,并且我通过相同的PHP页面调用其他JS函数没有问题:

body onload="Field_File.Init( '1', {$json});"

但我现在得到:

  

未捕获的TypeError:Field_File.ImgLoad不是函数

我在这次电话会议中遗漏了什么?

2 个答案:

答案 0 :(得分:4)

将模块(文字对象)的声明更改为

"Cast from Thing<T> to unrelated type Thing<Foo> always fails"

如果您希望范围保护某些私有变量,请使用IIFE

var Field_File = {
    Init: function( instance, json ){
    },
    ImgLoad: function( elem, type ){
        //do things
    }
}

许多变体都是可能的,所以重要的是要了解这里发生的事情,以便您可以根据自己的需要进行调整。

答案 1 :(得分:1)

使用ImageLoadthis更改为Field_File的属性。在这里用var声明它时,你在某种程度上模拟私有财产。

var Field_File = function( _ )
    this.Init = function( instance, json )
    {
    }

    this.ImgLoad = function( elem, type )
    {
        //do things
    }
}