要向对象添加功能,我可以像AddX一样将其写入其中:

function Foo()
{
    this.x = 1;

    this.AddX = function(y)
    {
      this.x += y;
    }

}

但是我发现其他方法可能是使用prototype:
function Foo()
{
    this.x = 1;
}

Foo.prototype.AddX = function(y)
{
    this.x += y;
}

使用:
obj = new Foo;
obj.AddX(5);
alert(obj.x);

在两种情况下结果都是相同的。哪条路线最佳,或者两者之间有什么区别?还有性能问题吗?

最佳答案

在您的第一种方法中,addX是一个实例方法。因此,每个Foo实例将拥有自己的addX副本。

在第二种方法中,addX被添加到prototype上,并且Foo的每个实例都共享相同的原型(prototype)。

因此,第二种方法将节省更多的内存。如果要创建大量实例,则最好使用第二种方法。

09-11 00:42