0

我有以下 javascript: ( JSFiddle )

$(function () {
    function Cat()
    {  
        this.Meow = function (sound) {
            alert("Meow: " + sound);
        }

        this.Kick = function () {
            MakeNoise();    
        }

        var MakeNoise = function () {
            Meow("noise");
            //Cat.Meow("noise");
            //self.Meow("noise");
            //this.Meow("noise");                      
        }        
    }

    var c = new Cat();
    c.Kick();
});​

当我调用该Kick函数时,我收到错误“未定义喵”(我在MakeNoise函数中尝试的四件事中的任何一件)。

我也尝试过这样的原型设计,但这给了我同样的错误:

Cat.prototype.Meow = function (sound) {
    return this.Meow(sound);    
}

我确信这有一个非常简单的解决方案,但我不知道如何成功调用Meow“Cat”类的函数。我怎样才能做到这一点?

顺便说一句,这种架构是否有意义?我的意图是拥有KickMeow作为公共职能,并MakeNoise作为私人。

4

1 回答 1

4

保存一个引用对象,以便您可以在MakeNoise函数中使用它。

$(function () {
    function Cat()
    {  
        var self = this;
        this.Meow = function (sound) {
            alert("Meow: " + sound);
        }

        this.Kick = function () {
            MakeNoise();    
        }

        var MakeNoise = function () {
            //Meow("noise");
            //Cat.Meow("noise");
            self.Meow("noise");
            //this.Meow("noise");                      
        }        
    }

    var c = new Cat();
    c.Kick();
});​

http://jsfiddle.net/mowglisanu/7XEYD/3/

于 2012-12-18T19:40:02.420 回答