我怎样才能在这个共享原型中拥有单独的数组

How can I have separate arrays in this shared prototype?

本文关键字:原型 拥有 单独 数组 共享      更新时间:2023-09-26

鉴于此:

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。

如果您希望 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]);