在类之外声明方法

时间:2015-07-27 20:54:00

标签: javascript methods

我知道我可以通过以下方式添加方法:

point.prototype.move = function () 
{
     this.x += 1;
}

但是,有没有办法通过将一个在其外部声明的函数赋值给一个属性来为类添加一个方法? 我很确定这不会起作用,但它会让我知道我正在尝试做什么:

function point(x, y)
{
     this.x = x;
     this.y = y;
     this.move = move();
}

function move()
{
     this.x += 1;
}

2 个答案:

答案 0 :(得分:6)

您的示例无法正常工作的唯一原因是您正在调用move()并分配其未定义的结果。

分配时,您应该只使用move函数的引用。

function move()
{
     this.x += 1;
}

function point(x, y)
{
     this.x = x;
     this.y = y;
     this.move = move
}

不同的方法

// Attach the method to the prototype
// point.prototype.move = move;

// Attach the method to the instance itself
// var myPoint = new point(1,2); myPoint.move = move; 

答案 1 :(得分:4)

function point(x, y, move)
{
     this.x = x;
     this.y = y;
     this.move = move;
}

function move()
{
     this.x += 1;
}

var obj =  new point(2, 5, move);