题解 | #双向绑定# 好题
双向绑定
https://www.nowcoder.com/practice/d1452ec52a134b328f23b97c02b230bd
var ul = document.querySelector("ul");
var person = {
sex: "男",
age: "25",
name: "王大锤",
height: 28,
weight: 32,
};
var inp = document.querySelector("input");
inp.value = person.weight;
const _render = () => {
var str = `<li>姓名:<span>${person.name}</span></li>
<li>性别:<span>${person.sex}</span></li>
<li>年龄:<span>${person.age}</span></li>
<li>身高:<span>${person.height}</span></li>
<li>体重:<span>${person.weight}</span></li>`;
ul.innerHTML = str;
inp.value = person.weight;
};
_render(ul);
// 补全代码
//根据input的value重新给属性赋值
inp.oninput = function () {
person.weight = this.value;
};
//定义对象的属性重新赋值时进行的操作
// handler里面不能定义变量,所以定义的变量要放在外面
Object.keys(person).forEach((key) => {
let value = person[key];
Object.defineProperty(person, key, {
get() {
return value;
},
set(newVal) {
value = newVal;
_render();
},
});
});
</script>

字节跳动工作强度 1112人发布