Javascript添加功能

时间:2012-01-28 09:39:57

标签: javascript jquery oop

要向对象添加函数,我将其写入其中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);

两种情况下结果相同。哪条路线最好或两者之间有什么区别?还有任何性能问题吗?

3 个答案:

答案 0 :(得分:3)

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

在第二种方法中,addX添加到prototypeFoo的每个实例都共享相同的原型。

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

答案 1 :(得分:1)

原型用于添加在功能的所有实例中反映的功能。

例如:

//First, create the custom object "circle"
function circle(){
}
circle.prototype.pi=3.14159

Taken from here

答案 2 :(得分:1)

在你的例子中,两者之间没有区别 但是你可以使用prototype属性为内置在Date,String等对象中的JavaScript添加函数......