ভেরিয়েবল যদি মোমেন্ট.জেএস অবজেক্ট হয় তবে কীভাবে পরীক্ষা করবেন?


94

আমার অ্যাপ্লিকেশনটির একটি HTML ফর্ম রয়েছে যা ব্যাকএন্ড এবং অন্যান্য ইনপুটগুলি ব্যবহারকারী দ্বারা প্রবেশ করানো থেকে কিছু ইনপুটগুলি পপুলেট করে (একটি timeইনপুটতে)। onChangeযখন ব্যবহারকারী কোনও মান পরিবর্তন করে তখন প্রতিটি ইনপুট দিয়ে একটি ফাংশন চলে।

ব্যাকএন্ড থেকে পপুলিযুক্ত ইনপুটগুলি momentবস্তুতে রূপান্তরিত হয় , ব্যবহারকারী-প্রবেশ তারিখগুলি কেবল স্ট্রিং। এর অর্থ onChangeফাংশনটি কিছু momentবস্তু এবং কিছু স্ট্রিংগুলির মুখোমুখি হয় । কোন ইনপুটগুলি momentঅবজেক্ট এবং কোনটি নয় তা আমার জানতে হবে।

কোনও ভেরিয়েবল কোনও momentবস্তু হলে পরীক্ষার জন্য প্রস্তাবিত পদ্ধতিটি কী ?

আমি লক্ষ্য করেছি যে momentবস্তুর একটি _isAMomentObjectসম্পত্তি রয়েছে তবে আমি ভেবে দেখছি ভেরিয়েবল কোনও momentবস্তু কিনা তা পরীক্ষা করার অন্য কোনও উপায় আছে কিনা ।

অন্য যে বিকল্পটি আমি চেষ্টা করেছি momentতা নির্বিশেষে চলককে কল করা calling এটি stringভেরিয়েবলগুলিকে momentবস্তুতে রূপান্তরিত করে এবং বিদ্যমান momentঅবজেক্টগুলিকে প্রভাবিত করে না বলে মনে হয় ।

উত্তর:


100

মুহুর্তের ঠিক এই জাতীয় উদ্দেশ্যে একটি isMomentপদ্ধতি রয়েছে । আপনি কী কী সন্ধান করবেন তা যদি না জানেন তবে ডক্সে এটি সন্ধান করা বিশেষত সহজ নয়।

এটি প্রথমে পরীক্ষা করে instanceofএবং তারপরে ব্যর্থ হয় (উদাহরণস্বরূপ কিছু সাবক্লাসিং বা ক্রস-রিয়েলিয়াম পরিস্থিতিতে) এটি _isAMomentObjectসম্পত্তিটির জন্য পরীক্ষা করবে ।


যদি এটি দৃ strongly়ভাবে টাইপ করা হয় না? moment.isMoment (ইনপুট);
ডন থমাস বয়েল

4
@ দন থোমাসবয়েলে এটি জাভাস্ক্রিপ্ট: শক্তিশালী টাইপিং নেই। 'স্ট্রং' টাইপিংয়ের জন্য একটি দ্বিধাহীন শব্দ, তবে প্রায় কোনও সম্ভাব্য সংজ্ঞা দ্বারা (সম্ভবত মেমরির সুরক্ষা ব্যতীত) জেএস টাইপগুলি দুর্বল। আপনি যে ধাক্কা দিতে পারেন তার একমাত্র উপায় inputহ'ল nullবা undefined, আক্ষরিকরূপে কোনও নন-নাল জেএস অবজেক্ট বা এমনকি আদিম মান কেবল একটি বুলিয়ান ফিরে আসবে।
জ্যারেড স্মিথ

35

এটি একটি instanceofমুহুর্ত কিনা তা আপনি পরীক্ষা করতে পারেন :

moment() instanceof moment; // true

6
উদাহরণস্বরূপ এবং মুহুর্তটি যদি একই উইন্ডোতে থাকে তবেই।
জেএলডে

4
এটি সর্বদা সত্য, কারণ মুহূর্ত () সর্বদা একটি মুহুর্তের অবজেক্ট তৈরি করে। আপনি কি তার পরিবর্তে "মুহুর্তের অবজেক্ট" বলতে চাইছেন; ?
NoBrainer

উদাহরণস্বরূপ ব্যবহারের বিপদটি হ'ল উদাহরণটি এক মুহুর্ত নির্ভরতা থেকে তৈরি করা যেতে পারে তবে অন্য মুহুর্ত থেকে এই মুহুর্তটির বিরুদ্ধে পরীক্ষা করবে। অর্থাত এই মুহুর্তের অবজেক্ট তৈরি করা কোডটি পরীক্ষার কোডের চেয়ে অন্য তৈরির ক্রিয়াকলাপটি ব্যবহার করে তা ভঙ্গ হবে। এটি কখন ঘটতে পারে তার একটি উদাহরণ যদি উপরের পরীক্ষাটি চালানো কোডটি একটি পৃথক এনপিএম প্যাকেজে থাকে যা মুহুর্তের অন্য সংস্করণের উপর নির্ভর করে।
হেনরিক হ্যানসন

3

moment () উদাহরণস্বরূপ মুহূর্ত;

সর্বদা সত্য হবে, কারণ যদি আপনার হয়

  • মুহূর্ত (অপরিজ্ঞাত) উদাহরণস্বরূপ
  • মুহূর্ত ("হ্যালো") উদাহরণস্বরূপ

আপনি সর্বদা একটি মুহূর্ত অবজেক্ট তৈরি করছেন। সুতরাং একমাত্র উপায় এটি চেক করা

  • মুহুর্ত (সম্পত্তি) .আইএস ভালিড ()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.