如何在javascript中声明成员函数?获取“TypeError:Object.function不是函数”

时间:2016-02-17 20:47:31

标签: javascript uncaught-typeerror

我来自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

3 个答案:

答案 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;
})();