javascript - অবজ - জাভাস্ক্রিপ্ট বই pdf




কিভাবে একটি বস্তু জাভাস্ক্রিপ্ট একটি প্রদত্ত সম্পত্তি আছে তা নির্ধারণ করুন (6)

xy এর মান নির্বিশেষে, আমি কোন বস্তু x একটি সংজ্ঞায়িত সম্পত্তি y কিনা তা নির্ধারণ করতে পারি?

আমি বর্তমানে ব্যবহার করছি

if (typeof(x.y) !== 'undefined')

কিন্তু যে একটু বিষ্ঠা মনে হচ্ছে। একটি ভাল উপায় আছে কি?


বস্তুর সম্পত্তি আছে:

যদি আপনি বস্তুর উপর যে বৈশিষ্ট্যের জন্য পরীক্ষা করছেন (এটির প্রোটোটাইপ শৃঙ্খলের অংশ নয়) আপনি .hasOwnProperty() ব্যবহার করতে পারেন:

if (x.hasOwnProperty('y')) { 
  // ......
}

বস্তু বা তার প্রোটোটাইপ একটি সম্পত্তি আছে:

আপনি ভাল উত্তরাধিকারী সম্পত্তি জন্য পরীক্ষা করার জন্য অপারেটর ব্যবহার করতে পারেন।

if ('y' in x) {
  // ......
}

Underscore.js বা লোডশ

if (_.has(x, "y")) ...

:)


আমার মূল কোড এক বৈশিষ্ট্য

if ( typeof(x.y) != 'undefined' ) ...

কিছু পরিস্থিতিতে এটি কার্যকর হতে পারে এটি x বিদ্যমান কিনা তা ব্যবহার করা নিরাপদ। Gnarf এর উত্তরগুলির কোনও পদ্ধতির সাথে, যদি এটি বিদ্যমান থাকে তবে কোন সন্দেহ থাকলে প্রথমটির জন্য x পরীক্ষা করা উচিত।

সুতরাং সম্ভবত তিনটি পদ্ধতির একটি তারের ঠাট মধ্যে একটি জায়গা আছে।


কেন সহজভাবে না:

if (typeof myObject.myProperty == "undefined") alert("myProperty is not defined!");

অথবা আপনি একটি নির্দিষ্ট টাইপ আশা করি:

if (typeof myObject.myProperty != "string") alert("myProperty has wrong type or does not exist!");

যেখানে আমি জানতে চাই যে foo নামক একটি বস্তুটিতে বার নামে একটি সম্পত্তি আছে যা আমি সহজেই ব্যবহার করি

if(foo.bar){
  //do stuff
}

সম্পত্তি বিদ্যমান না হলে জাভাস্ক্রিপ্ট মিথ্যা ফেরত। এই যদিও যদিও ভুল আছে। যেমন বার যদি একটি বুলিয়ান বা একটি সংখ্যা হতে পারে যা শূন্যের সমান হতে পারে। একটি মান ছাড়া সবকিছু মিথ্যা।

অন্যথায়, আমি এটি সবচেয়ে মার্জিত সমাধান খুঁজে পেতে।


যেহেতু প্রশ্নটি সম্পত্তির চেকিংয়ের সাথে জড়িত ছিল এবং ফাংশন আর্গুমেন্ট বিকল্পগুলির বস্তুর যাচাইকরণের জন্য একটি নিয়মিত ব্যবহারযোগ্য কথায়, আমি একাধিক বৈশিষ্ট্যের অস্তিত্ব পরীক্ষা করার লাইব্রেরি-মুক্ত স্বল্প উপায় উল্লেখ করেছি। Disclaimer: এটি ECMAScript 5 প্রয়োজন (কিন্তু আইওও যে কেউ এখনও IE8 ব্যবহার করে একটি ভাঙা ওয়েব প্রাপ্য)।

function f(opts) {
  if(!["req1","req2"].every(opts.hasOwnProperty, opts)) {
      throw new Error("IllegalArgumentException");
  }
  alert("ok");
}
f({req1: 123});  // error
f({req1: 123, req2: 456});  // ok







object