function defineProperty(person, key, val) {
Object.defineProperty(person, key, {
get: function () {
return val
},
set: function (newVal) {
if (val !== newVal) {
val = newVal;
_render(ul);
};
}
})
}
for (let key in person) {
defineProperty(person, key, person[key])
}
inp.oninput = function () {
person.weight = inp.value
}
此处最需要注意的是直接使用Object.defineproperty设置监听对象是get()的栈溢出问题,使用闭包处理一下即可
ps:严格来说还需要判断下person的是否为对象,此处没作处理

京公网安备 11010502036488号