উত্তর:
আপনি যদি সেই সামগ্রীর জন্য যা নিজে নিজেই পরীক্ষা করে থাকেন (এর প্রোটোটাইপ চেইনের একটি অংশ নয়) আপনি ব্যবহার করতে পারেন .hasOwnProperty()
:
if (x.hasOwnProperty('y')) {
// ......
}
in
উত্তরাধিকার সূত্রে প্রাপ্ত সম্পত্তিগুলির পরীক্ষার জন্য আপনি অপারেটরটি ব্যবহার করতে পারেন ।
if ('y' in x) {
// ......
}
{}.hasOwnProperty.call(x, 'y')
।
আপনি যদি জানতে চান যে বস্তুটিতে শারীরিকভাবে সম্পত্তি রয়েছে কিনা @ জিএনআরএফ এর উত্তর ব্যবহার hasOwnProperty
করে কাজ করবে।
আপনি যদি জানতে চান যে সম্পত্তিটি কোথাও আছে কিনা, তা নিজেই বস্তুতে বা প্রোটোটাইপ চেইনে রয়েছে, আপনি in
অপারেটরটি ব্যবহার করতে পারেন ।
if ('prop' in obj) {
// ...
}
যেমন .:
var obj = {};
'toString' in obj == true; // inherited from Object.prototype
obj.hasOwnProperty('toString') == false; // doesn't contains it physically
ইন্ডজোর.জেএস বা লোডাশ
if (_.has(x, "y")) ...
:)
Object.prototype.hasOwnProperty.call(x, "y")
। অ্যারে জন্য আমি মনে করি আপনি চাইতে পারেন Array.prototype.indexOf
, _.indexOf
অথবা_.contains
আমার মূল কোডটির একটি বৈশিষ্ট্য
if ( typeof(x.y) != 'undefined' ) ...
এটি কিছু পরিস্থিতিতে কার্যকর হতে পারে এটি x
বিদ্যমান বা না থাকাই ব্যবহার করা নিরাপদ । জিএনআরএফ-এর উত্তরের যে কোনও একটি পদ্ধতির সাহায্যে প্রথমে পরীক্ষা করা উচিত x
যদি এটির কোন সন্দেহ থাকে কিনা।
সুতরাং সম্ভবত তিনটি পদ্ধতিরই কারও এক কৌশলতে একটি ব্যাগ রয়েছে।
(x && x.hasOwnProperty('y'))
বা(x && 'y' in x)
ReferenceError
'অপরিজ্ঞাপিত' স্ট্রিংয়ের পরিবর্তে একটি ফেরত
যেহেতু সম্পত্তি সম্পত্তি যাচাইয়ের বিশৃঙ্খলা সম্পর্কিত ছিল, এবং এটির জন্য একটি নিয়মিত ইউজকেস ফাংশন আর্গুমেন্ট বিকল্পগুলির বস্তুর বৈধতা ছিল বলে ভেবেছিলাম যে আমি একাধিক সংখ্যার সম্পত্তি অস্তিত্ব পরীক্ষা করার জন্য একটি লাইব্রেরি-মুক্ত সংক্ষিপ্ত উপায় উল্লেখ করব। অস্বীকৃতি: এর জন্য ECMAScript 5 প্রয়োজন (তবে আইএমও যে কেউ এখনও আই 8 ব্যবহার করছেন এটি একটি ভাঙা ওয়েবের প্রাপ্য)।
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
কেন সহজভাবে নয়:
if (typeof myObject.myProperty == "undefined") alert("myProperty is not defined!");
অথবা আপনি যদি একটি নির্দিষ্ট প্রকারের আশা করেন:
if (typeof myObject.myProperty != "string") alert("myProperty has wrong type or does not exist!");
x.hasOwnProperty('y')
?
Object.prototype.hasOwnProperty.call(x, 'y')
সুতরাং "hasOwnProperty" নামে সম্পত্তিটি পরিদর্শন প্রক্রিয়াটির সাথে বিরোধ করবে না;)