Я пытаюсь определить getter для моего объекта. Тем не менее, я также хочу иметь возможность указать свойство этого сеттера.Getter/setter with defineProperty
Пример объекта:
var obj = {
weight: 14
};
Теперь я хочу, чтобы создать функцию, которая расширяет этот объект так, когда она классически называется obj.weight
, «14» будет возвращен. Но, я хочу также иметь возможность позвонить obj.weight.unit
и получить «Килограммы» взамен.
Это то, что я пытался сделать:
Object.defineProperty(obj, 'weight', {
get: function() {
return obj.weight;
},
'unit': 'Kilograms'
});
Получение веса работает, но получить вес блока не работает. Также, когда я пытаюсь увидеть контекст «obj» в консоли, он просто не показывает «unit», как будто его не существует.
С какой синтаксис вы намерены получить единицу? 'Obj.weight.unit'? 'Obj.unit'? –
То, что вы пытаетесь сделать, невозможно. Вы не можете иметь значение как число, так и объект с свойством 'unit'. – Bergi