如何在javascript中声明成员函数?获得;TypeError:Object.function不是函数;
我来自java背景,我试图以java风格的方式声明成员。为什么我的功能对外不可见或不被识别为功能?从函数内部为函数声明memberfunctions的正确方法是什么如何在javascript中声明成员函数?获得;TypeError:Object.function不是函数;,javascript,typeerror,Javascript,Typeerror,我来自java背景,我试图以java风格的方式声明成员。为什么我的功能对外不可见或不被识别为功能?从函数内部为函数声明memberfunctions的正确方法是什么 function Animation() { var draw = function draw() { ... }; var move = function move() { ... }; } function startAnimation() { ... var animation
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
动画是一个函数,而不是一个对象。请尝试此操作
var Animation = {
draw: function() {
...
},
move: function() {
...
},
}
当然,现在称之为“只做动画”
或者如果你想去的话,那不在问题之列
var Animation = (function ()
var Class = function()
{
this.draw = function () {};
this.move = function () {};
});
(Class.prototype);
return Class;
})();
如果希望将其作为实例方法使用,也可以这样做
function Animation() {...}
Animation.prototype.move = function() {...};
Animation.prototype.draw = function() {...};
或者使用ES6
class Animation {
constructor() {...}
move() {
...
}
draw() {
...
}
}
在代码中,
draw
和move
是私有变量
将您的功能分配给此的成员:
function Animation() {
this.draw = function() {
...
};
this.move = function() {
...
};
}
var an1 = new Animation();
an1.draw() // do something
an1.move() // also do something
当然,您也可以将其分配给@UnicodeSnowman描述的原型 您正在声明局部变量,仅在
Animation()函数中可见。您需要成员变量,例如this.draw=函数draw(){…}
为什么投票被否决?@Oleander给出了这个答案,你将如何创建多个动画实例?使用原始代码和其他答案,这是可能的。@PaulRoub-Aha,错过了这一部分。这就是为什么下层选民应该留下评论。我的意思是,我们还在这里学习。好吧,从技术上讲,你可以使用对象。创建我认为第二个例子中的括号是错误的。本地而非私有。这里有一个区别,考虑到JavaScript中的对象构造函数只是函数,并且语言中没有OOP隐私的真正概念。@Oka它也可以是局部的&作为私有的,JS不支持私有变量,但根据Douglas Crockford,它也可以用这种方式实现。请看。你也是对的