От: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
Object.defineProperty (obj, prop, descriptor)
Вы можете добавить его ко всем своим объектам:
Object.defineProperty(Object.prototype, "length", {
enumerable: false,
get: function() {
return Object.keys(this).length;
}
});
Или один объект:
var myObj = {};
Object.defineProperty(myObj, "length", {
enumerable: false,
get: function() {
return Object.keys(this).length;
}
});
Пример:
var myObj = {};
myObj.name = "John Doe";
myObj.email = "leaked@example.com";
myObj.length; //output: 2
Добавлен этот способ, он не будет отображаться в for..in циклах:
for(var i in myObj) {
console.log(i + ":" + myObj[i]);
}
Выход:
name:John Doe
email:leaked@example.com
Примечание: он не работает в браузерах