如果更改javascript 类中的字段值?

[code="js"]
function A() {
this.p1 = "A";
}
[/code]

要如何填写语句
[u] [/u]
使得下面的语言成立
[code="js"]
var a1 = new A();
var a2 = new A();
alert(a1.p1); // 输出 ABC
alert(a2.p1); // 输出 ABC
[/code]

[b]提示[/b]
我这样写好像不行
[code="js"]
A.prototype.p1 = "ABC";
[/code]

JS对象的属性是沿着原型链查找的,而原型链的最前端是当前对象上下文,所以上面声明的
[code="javascript"]
this.p1 = "A";

[/code]
是访问当前对象上的p1属性,因为已经找到跑p1属性,所以不会查找到A的原型对象上,所以
[code="javascript"]
A.prototype.p1 = "ABC";

[/code]
这个是覆盖不了构造函数中声明的p1的。只能是在a1、a2创建后再添加p1属性来覆盖:
[code="javascript"]
var a1 = new A();
var a2 = new A();
a1.p1 = a2.p1 = "ABC";
[/code]

function A(){
//this.p1 = "A"; 这句代表要覆盖原型中的p1 覆盖了自然以此类的实例为准
}