共享对象写入磁盘后,其数值便被保存。如果打开共享对象,修改其中的一些项目,则未被操作的项目将会被延续保存。
例如,下面的代码在磁盘上建立了一个包含五个数据项目的数据共享对象:
var shareobj:SharedObject = SharedObject.getLocal("endsgame","/");
shareobj.data.bname="Ender's name";
shareobj.data.price=29.6;
shareobj.data.isOrigin=false;
shareobj.data.sellurl=new URLRequest("http://boookstore");
shareobj.data.totalpage=344;
如果在另一个程序中打开该数据共享对象,并修改其中的两个数据项目,另外新建一个项目。
var shareobj:SharedObject = SharedObject.getLocal("endsgame","/");
//修改
shareobj.data.bname="Jacks Dream";
shareobj.data.price=18.5;
//新建项目
shareobj.data.transLang="Spanish";
在最后执行数据写入时,并非仅仅写入涉及到的三个项目,而是将位操作的项目与操作的项目一同写入。如果读取此数据共享对象的全部项目,则结果如下:
var shareobj:SharedObject = SharedObject.getLocal("endsgame","/");
trace(shareobj.size);
for (var foo:String in shareobj.data) {
trace("Item "+foo+" :"+shareobj.data[foo]);
}
//代码输出:
208
Item totalpage :344
Item transLang :Spanish
Item bname :Jacks Dream
Item isOrigin :false
Item sellurl :[object Object]
Item price :18.5
为了删除不需要的项目,应该对这些项目调用delete关键字。下面的代码删除数据共享对象中的指定项目项目:
delete shareobj.data.sellurl;
delete shareobj.data.totalpage;
或者调用clear()方法,清空一个数据共享对象。调用clear()方法后,数据共享对象的内存和磁盘数据都会被清空。
shareobj.clear();
trace(shareobj.size);// output: 0
shareobj.data.price=18.5;
shareobj.data.transLang="Spanish";
trace(shareobj.size); //output : 66
在清空一个数据共享对象后,其内部的数据消失了,但是该对象依然存在,可以使用原来的引用标识继续添加新的属性。