var obj = { name: 'singing' }
Object.defineProperty(obj, "name", {
configurable: true,
get() {
console.log("get");
return obj.name;
},
set(name) {
obj.name = name;
},
});
如上的数据劫持会发现在obj.name取值的时候,触发了get,get里又再次obj.name千万死循环。因此正确写法应如下
let obj = { name: "singing" };
let name = obj.name;
Object.defineProperty(obj, "name", {
configurable: true,
get() {
console.log("get");
return name;
},
set(newName) {
console.log("set");
name = newName;
return newName;
},
});