javascript对象中创建新对象问题

var TestObject = Class.create();

TestObject.prototype = {
data: new Array(),
initialize: function(){
}
}

var ss = new TestObject();
ss.data.push("AAA");
alert(ss.data.length);

为什么多次执行(总是创建新对象后,向对象data数组里,加入一条数据)
var ss = new TestObject();
ss.data.push("AAA");
alert(ss.data.length);
ss.data.length会增加,按理说应该都是1才对吧?
[b]问题补充:[/b]
那怎么样才能不对象共享呢?

如果使用
TestObject.prototype.data=new Array();
给它的data赋值的话.
相当于创建了一个全局变量(假设说它的名字为temp),temp=new Array();
然后TestObject,prototype.data=temp;

因为temp是一个"对象".所以TestObject,prototype.data的值实际上是类似于C语言中的指针,指向了new Array()的地址.
所以,当你使用ss.data.push("AAA");之后,实际上是push到了temp这个全局变量中.因为其它的TestObject对象中的data全都是共享了temp这个变量.所以只要修改其中一个,其它的都会受影响.但如果用一个普通的值类型变量,如一个数字123,或一个字符串"test",不管怎么修改都不会出错了.
建议楼主在不要随便让prototype中的属性指向一个"对象"类型的数据.因为这样的话,会造成这个属性变为全局共享.任何地方的修改都会影响到另一个地方的值.

如果一定要用的话.
可以在声明类的时候用:
[code="js"]
function TestObject={
this.dataa=new Array()
}[/code]

这样,由于作用域的关系,你每次创建TestObject这个类的实例时,都会新建一个Array对象,不会上上面一样,共享同一个Array的对象.

prototype对象里面的方法和对象其实是各个实例化对象共享的,所以其实都改变了data的值