Javascript _.map在返回时覆盖值
我注意到在使用Javascript _.map在返回时覆盖值,javascript,node.js,lodash,Javascript,Node.js,Lodash,我注意到在使用lodash.ma函数时出现了一些奇怪的行为。(那或我公然忽略了某些东西) 我有以下资料: _this.searches = _.map(body.rows, function(row) { var tmpSearch = new Search(row.value); console.log(tmpSearch.search['name']); return tmpSearch.search; }); Search只是一个带有一些原型函数的标准javasc
lodash
.ma
函数时出现了一些奇怪的行为。(那或我公然忽略了某些东西)
我有以下资料:
_this.searches = _.map(body.rows, function(row) {
var tmpSearch = new Search(row.value);
console.log(tmpSearch.search['name']);
return tmpSearch.search;
});
Search
只是一个带有一些原型函数的标准javascript对象
但是,当我检查\u this.searches
时,每个对象都是相同的,我尝试循环通过它以获得更好的结果:
_.forEach(_this.searches, function(search) {
console.log(search['name']);
})
地图的控制台.log
如下所示:
2015-04-03T14:14:29+0800 <log> searches.js:35 () test
2015-04-03T14:14:29+0800 <log> searches.js:35 () Test 2
2015-04-03T14:14:29+0800 <log> searches.js:35 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
2015-04-03T14:14:29+0800 <log> searches.js:42 () Testing search
搜索
可在此处找到:
虽然没有什么特别的事情发生。所以问题是:
Search.prototype.search = {};
只要将search
属性放入search
类的原型中,它就会在search
的所有实例之间共享。因此,此属性的每次更改都会影响所有实例。这就是为什么您总是看到最后分配的值。
要修复它-将此属性放入实例本身,例如,在构造函数中:
var Search = function(searchDoc) {
this.search = {};
if(!_.isEmpty(searchDoc)) this.setSearch(searchDoc);
};
请参阅。body.rows的结构是什么?row.value
是对象还是类似字符串/整数值的smth?@Kirilbody.rows
是一个包含对象的数组,row.value
也是一个对象。哇,真不敢相信我忽略了这一点。这肯定解决了问题,非常感谢!