වඩාත්ම ශක්තිමත් පිළිතුර (එනම් අඩුම දෝෂ ඇති කරන අතරතුර ඔබ කිරීමට උත්සාහ කරන දෙයෙහි අභිප්රාය ග්රහණය කරගනී):
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);
ජාවාස්ක්රිප්ට් හි යම් ආකාරයක සම්මුතියක් ඇත, ඔබ Object.prototype වෙත දේවල් එකතු නොකරයි , එයට විවිධ පුස්තකාලවල ගණන් කිරීම් බිඳ දැමිය හැකිය. වස්තුවට ක්රම එකතු කිරීම සාමාන්යයෙන් ආරක්ෂිතයි.
මෙන්න 2016 වන විට යාවත්කාලීන කිරීමක් සහ ES5 සහ ඉන් ඔබ්බට පුළුල් ලෙස යෙදවීම . IE9 + සහ අනෙකුත් සියලුම නවීන ES5 + හැකියාව ඇති බ්රව්සර් සඳහා, ඔබට භාවිතා කළ හැකි Object.keys()
බැවින් ඉහත කේතය පහත පරිදි වේ:
var size = Object.keys(myObj).length;
මෙය Object.keys()
දැනට ගොඩනගා ඇති බැවින් දැනට පවතින කිසිදු මූලාකෘතියක් වෙනස් කිරීමට අවශ්ය නොවේ .
සංස්කරණය කරන්න : වස්තු වලට සංකේතාත්මක ගුණාංග තිබිය හැකි අතර ඒවා Object.key ක්රමය හරහා ආපසු ලබා දිය නොහැක. එබැවින් ඒවා සඳහන් නොකර පිළිතුර අසම්පූර්ණ වනු ඇත.
වස්තු ගුණාංග සඳහා අද්විතීය හඳුනාගැනීම් නිර්මාණය කිරීම සඳහා භාෂාවට සංකේත වර්ගය එක් කරන ලදි. සංකේත වර්ගයේ ප්රධාන වාසිය වන්නේ නැවත ලිවීම වැළැක්වීමයි.
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