සෑම් ඩටන් පිළිතුරු දුන් පරිදි, මේ සඳහාම නව ක්රමයක් ECMAScript 5 වන සංස්කරණයේ හඳුන්වා දී ඇත. Object.keys()
ඔබට අවශ්ය දේ කරනු ඇති අතර එය ෆයර්ෆොක්ස් 4 , ක්රෝම් 6, සෆාරි 5 සහ අයිඊ 9 හි සහය දක්වයි .
ඔබට සහාය නොදක්වන බ්රව්සර් තුළද මෙම ක්රමය ඉතා පහසුවෙන් ක්රියාත්මක කළ හැකිය. කෙසේ වෙතත්, එහි ක්රියාත්මක කිරීම් සමහරක් ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සමඟ සම්පුර්ණයෙන්ම අනුකූල නොවේ. මෙන්න වඩාත් අනුකූල විසඳුමක්:
Object.keys = Object.keys || (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty,
hasDontEnumBug = !{toString:null}.propertyIsEnumerable("toString"),
DontEnums = [
'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty',
'isPrototypeOf', 'propertyIsEnumerable', 'constructor'
],
DontEnumsLength = DontEnums.length;
return function (o) {
if (typeof o != "object" && typeof o != "function" || o === null)
throw new TypeError("Object.keys called on a non-object");
var result = [];
for (var name in o) {
if (hasOwnProperty.call(o, name))
result.push(name);
}
if (hasDontEnumBug) {
for (var i = 0; i < DontEnumsLength; i++) {
if (hasOwnProperty.call(o, DontEnums[i]))
result.push(DontEnums[i]);
}
}
return result;
};
})();
දැනට පිළිගත් පිළිතුරට hasOwnProperty () සඳහා චෙක්පතක් ඇතුළත් නොවන අතර මූලාකෘති දාමය හරහා උරුම වූ දේපල නැවත ලබා දෙන බව සලකන්න . ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් හි සුප්රසිද්ධ ඩොන්ට්එනම් දෝෂය සඳහා ද එය හේතු නොවේ, එහිදී මූලාකෘති දාමයේ ගණන් කළ නොහැකි ගුණාංග දේශීයව ප්රකාශයට පත් කරන ලද දේපල එකම නමක් සහිත ඩොන්ට්එනම් ගුණාංගයට උරුම වීමට හේතු වේ.
Object.keys () ක්රියාත්මක කිරීමෙන් ඔබට වඩාත් ශක්තිමත් විසඳුමක් ලැබෙනු ඇත.
සංස්කරණය කරන්න: මූලාකෘති සඳහා සුප්රසිද්ධ දායකයෙකු වන කැන්ගක්ස් සමඟ මෑතකදී කළ සාකච්ඡාවකින් පසුව , ඩොන්ට්එනම් දෝෂය සඳහා වන Object.forIn()
ක්රියාකාරිත්වය මෙහි ඇති කේතයේ කේතය මත පදනම්ව ක්රියාත්මක කළෙමි .
_.keys(myJSONObject)