2010-07-21 28 views
1

我在使用date.js庫。你是如何阻止javascript通過引用分配對象的?

以前的代碼:

alert(incidentDate); 
var deadlineDate = incidentDate; 
deadlineDate.add(2).years(); 
alert(incidentDate); 
return; 

添加到deadlineDate造成incidentDate改變過。有些閱讀表明,這是因爲JavaScript中的對象總是通過引用來分配。我發現了一個解決方法(如下所示),但它開始混亂。肯定有一些更好的方法可以做到這一點?

此外,我使用的解決方法僅適用於Date對象。我將如何處理另一種對象類型?

當前代碼:

var deadlineDate; 
deadlineDate = incidentDate.toString('yyyy-MM-dd'); 
alert(incidentDate); 
alert(deadlineDate); 
deadlineDate = Date.parse(deadlineDate); 
alert(incidentDate); 
alert(deadlineDate); 
deadlineDate.add(2).years(); 
alert(incidentDate); 
alert(deadlineDate); 
return; 

注:所有警報都只是進行調試。

+0

一旦你拿出警報,這並不是那麼混亂。通用的答案是克隆,但它只適用於普通對象,不適用於特定類型的對象。 – Anurag 2010-07-21 16:26:24

+0

[JavaScript:如何通過值傳遞對象?]的可能重複(http://stackoverflow.com/questions/7574054/javascript-how-to-pass-object-by-value) – 2014-12-30 03:35:47

回答

0

正如Anurag所說,唯一的一般解決方案是cloning。但是,有更好的方法來編寫您的解決方法。使用毫秒值創建一個新的Date,而不是格式化一個字符串,然後必須解析它。

相關問題