我有以下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
函数时,我收到错误“Meow is not defined”(我在MakeNoise
函数中尝试过的四件事中的任何一件)。
我也尝试了原型设计,但这给了我同样的错误:
Cat.prototype.Meow = function (sound) {
return this.Meow(sound);
}
我确信这有一个非常直截了当的解决方案,但我无法弄清楚如何成功调用“Cat”类的Meow
函数。我怎么能这样做?
顺便说一句,这个架构是否有意义?我的目的是将Kick
和Meow
作为公共函数,将MakeNoise
作为私有函数。
答案 0 :(得分: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();
});