[英]JS: Array.push() fails to add same object twice, even when Array is reinitiallized
[英]Array.push() makes all elements the same when pushing an object
我是 node 和 javascript 的新手,並且一直在努力解決以下問題。 我創建了一個對象,如下所示:
var Subscriber = {
'userID': String,
'email': String,
'name': String,
'stage': String,
'poster': Boolean,
'canEmail': Boolean,
'stage': String, }
問題不在於Array.prototype
的push
方法,而在於您的綁定。 您在async.foreach
塊中的每次迭代中都修改相同s
對象,該對象實際上與之前定義的Subscriber
相同。
首先,您應該將s
變量的聲明移至 foreach 塊。
而且如果你想創建一個具有默認值的對象,它應該是一個function
,它返回一個新對象:
function Subscriber() {
return {
'userID': '',
'email': '',
'name': '',
'stage': '',
'poster': false,
'canEmail': false,
'stage': ''
};
};
然后你可以像這樣實例化一個Subscriber
對象:
var s = Subscriber();
有關更多解釋,請參閱此答案或MDN 上的 Closures 。
在推入數組之前克隆對象也解決了這個問題。
temp = clone(s);
subscribers.push(temp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.