簡體   English   中英

"Array.push() 使所有元素在推送對象時都相同"

[英]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.prototypepush方法,而在於您的綁定。 您在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM