Javascript Uncaught ReferenceError定义函数的错误

时间:2014-07-05 19:07:29

标签: javascript function public

我正在尝试编写一个可以在对象函数内调用的公共函数,也可以在对象函数之外调用。 例如,这是一个非常简单的问候对象,带有一个打印hello的公共函数hello。

var greeting = function()
{

    this.hello = function(){ console.log("hello"); } 
    this._hello = function()
    {
        hello(); // first call, Uncaught ReferenceError: hello is not defined
    }

    _hello(); // second call, Uncaught ReferenceError: hello is not defined 

}

var g = new greeting();
g.hello(); // third call, Good 

hello函数显然是在greeting函数本身中定义的,但是为什么它正在获取Uncaught ReferenceError:hello不是从第一个调用和第二个调用定义的,而是在上面的第三个调用中没有定义

3 个答案:

答案 0 :(得分:0)

因为您试图在没有引用对象的情况下调用方法(this)

答案 1 :(得分:0)

您需要使用其对象别名(' this.hello')调用hello。这是访问该功能的唯一方法。

不要试图粗鲁,我认为你需要从一些初学JavaScript资源中做更多的阅读。

答案 2 :(得分:0)

这是因为当你使用this前缀来定义一个函数时,它不会被调用而没有前缀,就像你正在尝试做的那样。使用this前缀使其成为属性,只能使用this前缀或引用对象实例的任何其他前缀来调用。如果没有前缀,则该函数必须位于本地或更高的范围内。

如果要将其称为带有前缀的属性,并且在对象内没有前缀,则可以执行以下操作:

var greeting = function()
{
    function hello()
    {
        console.log("hello");
    }
    this.hello = hello;
    hello();
}

var g = new greeting();
g.hello();

这会创建一个不属于属性的本地函数hello。然后它创建一个属性hello,它引用本地函数hello