Все ж просто
const p = {
a: 11
};
const obj = {
b: 22
};
Object.setPrototypeOf(obj, p);
obj.a //-> 11
obj.b //-> 22
console.log(Object.keys(obj).length); //-> 1
console.log((() => {
let length = 0;
for (const k in obj) {
length++;
}
return length;
})()); //-> 2 , т.е. a и b
console.log((() => {
let length = 0;
for (const k in obj) {
if (obj.hasOwnProperty(k)) {
length++
}
}
return length;
})()); //-> 1
'a' in obj //-> true
obj.hasOwnProperty('a') //-> false
for...in
в паре с
hasOwnProperty
можно считать устаревшей конструкцией, вместо нее используются методы
Object