Javascript 为什么其他对象更改会反映到它所复制的对象上

Javascript 为什么其他对象更改会反映到它所复制的对象上,javascript,Javascript,在下面的代码中,我将item复制到dummyItem,然后更改了dummyItem的description属性,然后更改了item的description属性。一个接一个地调用customFilter函数,但不调用任何项 Item structure item = {brand: "test_brand", categorygroup: "Food & Drink", categoryid: 131, categorytext: "Breweries", description:"&l

在下面的代码中,我将item复制到dummyItem,然后更改了dummyItem的description属性,然后更改了item的description属性。一个接一个地调用customFilter函数,但不调用任何项

Item structure

item = {brand: "test_brand", categorygroup: "Food & Drink", categoryid: 131, categorytext: "Breweries", description:"<b><i>the new description</i><b>", listprice: 123, noofrewards: 14, supplieditems: 1, title: "test_dev"}

customFilter : function(item, args) {
                    if (args.searchString != "" && item.productid.toFixed(2).indexOf(args.searchString.toLowerCase()) == -1 
                                                && item.shortid.toLowerCase().indexOf(args.searchString.toLowerCase()) == -1 
                                                && item.title.toLowerCase().indexOf(args.searchString.toLowerCase()) == -1
                                                && item.brand.toLowerCase().indexOf(args.searchString.toLowerCase()) == -1 
                                                && item.description.toLowerCase().indexOf(args.searchString.toLowerCase()) == -1 
                                                && item.categorytext.toLowerCase(2).indexOf(args.searchString) == -1 
                                                && item.companyid.toFixed(2).indexOf(args.searchString) == -1 
                                                && item.listprice.toFixed(2).indexOf(args.searchString) == -1 
                                                && item.currency.toLowerCase().indexOf(args.searchString.toLowerCase()) == -1) {
                        return false;
                    }
                    var dummyItem = item;
                    dummyItem.description = $('<div></div>').html(item.description).text();
                    $self.filteredData.push(dummyItem);
                    return true;
                },
项目结构
项目={品牌:“测试品牌”,类别组:“食品和饮料”,类别ID:131,类别文本:“啤酒厂”,描述:“新描述”,标价:123,noofrewards:14,供应商:1,标题:“测试开发”}
customFilter:函数(项,参数){
if(args.searchString!=“和&item.productid.toFixed(2).indexOf(args.searchString.toLowerCase())=-1
&&item.shortid.toLowerCase().indexOf(args.searchString.toLowerCase())==-1
&&item.title.toLowerCase().indexOf(args.searchString.toLowerCase())=-1
&&item.brand.toLowerCase().indexOf(args.searchString.toLowerCase())=-1
&&item.description.toLowerCase().indexOf(args.searchString.toLowerCase())=-1
&&item.categorytext.toLowerCase(2).indexOf(args.searchString)=-1
&&item.companyid.toFixed(2).indexOf(args.searchString)=-1
&&item.listprice.toFixed(2).indexOf(args.searchString)=-1
&&item.currency.toLowerCase().indexOf(args.searchString.toLowerCase())==-1){
返回false;
}
var dummyItem=项目;
dummyItem.description=$('').html(item.description.text();
$self.filteredata.push(dummyItem);
返回true;
},

您指的是同一个对象:

var dummyItem = item;
var src={
“a”:45
};
log('src',src);
var trg=src;//trg指向src
控制台日志('trg',trg);
变量cpy={
“a”:45
};
console.log('cpy',cpy);
log('src==trg',src==trg)//符合事实的
log('src==cpy',src==cpy)//错误

打开控制台…
您没有复制对象,只是创建了一个新的快捷方式。那么我如何才能使copy thency=JSON.parse(JSON.stringify(obj));(仅适用于数据道具)如果您想用固有的东西和方法克隆对象,这很复杂…谢谢。还发现了这个变量copiedObject=jQuery.extend({},originalObject);谢谢大家的回复。我在这里找到了答案