如何在此共享原型中使用单独的数组?

时间:2012-05-19 01:01:35

标签: javascript prototype

鉴于此:

var p = function(){}; 
p.prototype = { id : null, arr : []}
var a = new p(); 
var b = new p();
a.id = 1;
a.arr.push(5);
alert(b.arr[0]);

警报显示5表示a.arr == b.arr,但a.id和b.id是分开的(a.id!= b.id)。我怎样才能使a.arr!= b.arr?

约束:

p必须能够使用new p()。或者,必须有办法制作独特的p。

1 个答案:

答案 0 :(得分:3)

如果你想让id和arr对每个p实例都是唯一的,你需要在p构造函数中实例化它们。原型对象只应用于共享常量和函数。

var p = function(){
    this.id = null;
    this.arr = [];
}; 

var a = new p(); 
var b = new p();

a.id = 1;
a.arr.push(5);
alert(b.arr[0]);