我有一个对象定义的全局方式:
window.myobj = {};
然后添加新元素,最后通过 ajax 按SaveData(obj)
功能将其保存到数据库中。问题是,我在短时间内做了很多次,似乎传递给函数的只是一个指向一个对象的指针,所以当另一个事件发生时,它会在保存函数内部发生变化,即使它外面改了。在PHP中,你必须使用&$obj
它......所以我该如何正确地做到这一点,所以传递给函数的obj不仅仅是一个指针?
编辑:问题出现在这里:
可以这么说event = {time:123,type:blah}
function SaveData(event){
obj = jQuery.extend({}, event); // doesn't seem to replicate event
$.post('save',obj,function(res){
if(res) console.log(obj);
});
if(obj.type == 'blah'){
newobj = jQuery.extend({}, obj);
newobj.type = 'newtype';
newobj.time = 234;
SaveData(newobj);
}else if(obj.type == 'newtype'){
newobj = jQuery.extend({}, obj);
newobj.type = 'lasttype';
newobj.time = 345;
SaveData(newobj);
}
}
这将返回 3 个相同的对象:
{time:345,type:lasttype}