4

鉴于这种:

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。

4

1 回答 1

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]);
于 2012-05-19T01:14:00.683 回答