2015-06-22 5 views
42

मैंने एक समस्या में भाग लिया है जहां मुझे एक पल ऑब्जेक्ट के प्रारंभिक मानों को संग्रहीत करना है, लेकिन मुझे मूल चर के साथ बदलने से मेरी चर को रोकने में कुछ परेशानी हो रही है।मैं पल.जेएस में उत्परिवर्तन के आसपास कैसे काम करूं?

दुर्भाग्यवश Object.freeze() काम नहीं करता है, क्योंकि जब मैं इसे प्रारूपित करने का प्रयास करता हूं तो moment.js एक "अमान्य तिथि" त्रुटि देता है।

+3

और कोड इस तरह दिखता है ...? यदि आप प्रारंभिक मान को स्टोर करना चाहते हैं, तो * valueOf * विधि या संख्या में अंतर्निहित रूपांतरण का उपयोग करके उपलब्ध समय मान को संग्रहीत करें। – RobG

+0

एक बार आपका चर सेट हो जाने पर, यह सेट हो गया है, यह स्वचालित रूप से परिवर्तित नहीं होगा, इसलिए इसे बार-बार सेट न करें –

उत्तर

67

frozen-moment नामक एनपीएम पर एक Moment.js प्लगइन है - आप के स्थान पर moment().freeze() का उपयोग कर सकते हैं।

अन्यथा, वेनिला Moment.js एक clone विधि है कि आप अस्थिरता की समस्याओं से बचने में मदद मिलनी चाहिए है, तो आप कुछ इस तरह कर सकता है:

var a = moment(), 
    b = a.clone(); // or moment(a) 

अद्यतन:

यह किया गया है दो साल चूंकि मैंने यह जवाब लिखा था। इस समय, तिथियों के साथ काम करने के लिए एक और लाइब्रेरी सामने आई है और बहुत सारे कर्षण प्राप्त हुए हैं: https://date-fns.org/

यह लाइब्रेरी डिफ़ॉल्ट रूप से अपरिवर्तनीय है और मॉड्यूलर, कार्यात्मक आर्किटेक्चर का पालन करती है, जिसका अर्थ यह है कि यह पेड़ हिलाने और क्लाइंट- साइड बंडलिंग यदि आप किसी ऐसे प्रोजेक्ट पर काम कर रहे हैं जो क्लाइंट साइड पर वेबपैक का व्यापक उपयोग करता है, और पाते हैं कि Moment.js आपको अपने निर्माण के साथ परेशानी दे रहा है, या यहां तक ​​कि अगर Moment.js 'mutability आपको सिरदर्द का कारण बन रहा है, तो आप date-fns एक प्रयास देना चाहिए।

+0

ठीक है, मैं fullCalendar प्लगइन में moment.js का उपयोग कर रहा हूं और यह पता चला कि मुझे पल ऑब्जेक्ट मिल रहा था मेरे इवेंट की बाद की स्थिति से डेटा मुझे लगता था। म्यूटेबिलिटी मुद्दे निश्चित रूप से पल के साथ एक चीज हैं। हालांकि, इसलिए सुझाव के लिए आपको बहुत बहुत धन्यवाद और खेद है कि मैंने आपका समय बर्बाद कर दिया। – Shengbo1618

+7

आप इसे संग्रहीत किए बिना संग्रहित 'पल' चर का उपयोग कर सकते हैं: केवल क्लोन() का उपयोग करें: 'zz = moment(); zz.clone()। जोड़ें (3, 'एच')। ToISOString(); टिप्पणी के ऊपर ' – Quake1TF

+0

मदद मिली, बहुत बहुत धन्यवाद! – jones

संबंधित मुद्दे