সর্বাধিক দৃ (় উত্তর (যেমন আপনি খুব কম বাগের কারণ হিসাবে যখন আপনি যা করার চেষ্টা করছেন তার উদ্দেশ্যটি ক্যাপচার করে) হ'ল:
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
var size = Object.size(myObj);
জাভাস্ক্রিপ্টে এক ধরণের কনভেনশন রয়েছে যা আপনি অবজেক্ট.প্রোটোটাইপগুলিতে জিনিস যোগ করবেন না , কারণ এটি বিভিন্ন লাইব্রেরিতে তালিকাভঙ্গ করতে পারে। যদিও অবজেক্টে পদ্ধতি যুক্ত করা সাধারণত নিরাপদ।
এখানে ২০১ 2016 সালের একটি আপডেট এবং ES5 এবং এর বাইরেও ব্যাপকভাবে স্থাপনা রয়েছে । IE9 + এবং অন্যান্য সমস্ত আধুনিক ES5 + সক্ষম ব্রাউজারগুলির জন্য, আপনি ব্যবহার করতে পারেন Object.keys()
যাতে উপরের কোডটি কেবল হয়ে যায়:
var size = Object.keys(myObj).length;
Object.keys()
এখন অন্তর্নির্মিত হওয়ার কারণে এটি কোনও বিদ্যমান প্রোটোটাইপ পরিবর্তন করতে হবে না।
সম্পাদনা করুন : অবজেক্টগুলির প্রতীকী বৈশিষ্ট্য থাকতে পারে যা অবজেক্ট.কি পদ্ধতিতে ফেরত দেওয়া যাবে না। সুতরাং উত্তরগুলি উল্লেখ না করে উত্তরটি অসম্পূর্ণ হবে।
প্রতীক প্রকারটি বস্তুগত বৈশিষ্ট্যের জন্য স্বতন্ত্র সনাক্তকারী তৈরি করতে ভাষায় যুক্ত হয়েছিল। প্রতীক প্রকারের প্রধান সুবিধা হ'ল ওভাররাইটগুলি প্রতিরোধ।
Object.keys
বা Object.getOwnPropertyNames
প্রতীকী বৈশিষ্ট্যের জন্য কাজ করে না। এগুলি ফেরত দেওয়ার জন্য আপনাকে ব্যবহার করতে হবে Object.getOwnPropertySymbols
।
var person = {
[Symbol('name')]: 'John Doe',
[Symbol('age')]: 33,
"occupation": "Programmer"
};
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // 1
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // 2