要向对象添加函数,我将其写入其中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);
两种情况下结果相同。哪条路线最好或两者之间有什么区别?还有任何性能问题吗?
答案 0 :(得分:3)
在您的第一种方法中,addX
是一种实例方法。因此,Foo
的每个实例都有自己的addX
副本。
在第二种方法中,addX
添加到prototype
,Foo
的每个实例都共享相同的原型。
因此第二种方法将节省更多内存。如果要创建大量实例,那么最好使用第二种方法。
答案 1 :(得分:1)
原型用于添加在功能的所有实例中反映的功能。
例如:
//First, create the custom object "circle"
function circle(){
}
circle.prototype.pi=3.14159
答案 2 :(得分:1)
在你的例子中,两者之间没有区别 但是你可以使用prototype属性为内置在Date,String等对象中的JavaScript添加函数......