我来自java背景,我试图以java风格的方式声明成员。为什么我的功能不在外部可见或未被识别为功能?从函数中声明函数的成员函数的正确方法是什么?
function Animation() {
var draw = function draw() {
...
};
var move = function move() {
...
};
}
function startAnimation() {
...
var animation = new Animation();
function frame() {
...
animation.move()
animation.draw();
...
}
}
执行代码时,我只是在控制台中出错:
TypeError: Object.function is not a function
答案 0 :(得分:4)
如果您希望将此作为实例方法使用,您也可以
function Animation() {...}
Animation.prototype.move = function() {...};
Animation.prototype.draw = function() {...};
或与ES6
class Animation {
constructor() {...}
move() {
...
}
draw() {
...
}
}
答案 1 :(得分:4)
在您的代码中,draw
& move
是私有变量。
将您的职能分配给this
的成员:
function Animation() {
this.draw = function() {
...
};
this.move = function() {
...
};
}
var an1 = new Animation();
an1.draw() // do something
an1.move() // also do something
当然,您也可以将其分配给 @UnicodeSnowman 描述的原型。
答案 2 :(得分:3)
动画是一个不是对象的函数试试这个
var Animation = {
draw: function() {
...
},
move: function() {
...
},
}
ofcourse现在称之为只做Animation.draw()
或者如果你想在问题中找到原型
var Animation = (function ()
var Class = function()
{
this.draw = function () {};
this.move = function () {};
});
(Class.prototype);
return Class;
})();