Как установить значение по умолчанию со значением метода доступа в Object.defineProperties?
Я хочу иметь возможность установить новое имя при создании нового объекта. Но каким-то образом я получил бесконечный цикл. Я не знаю, как это исправить.
function Human(opt) {
this.name = opt.name; //this causes ranger error or infinite loop
}
Object.defineProperties(Human.prototype, {
name : {
set : function(val) {
if(name === 'Einstein') {
console.log('Hello Einstein');
}
this.name = val;
},
configurable : false
}
});
1 ответ
Решение
В вашем коде нет бесконечного цикла, но было бы, если бы вы изменили это:
this.end = val;
к этому:
this.name = val;
(Вопрос теперь обновлен для использования this.name = val;
)
Потому что это, конечно, называется set
опять и опять...
То, что вам нужно, это что-то вроде вашего .end
свойство для хранения фактического значения, а затем использовать get
средство доступа для получения значения из .end
,
get: function() { return this.end },