function getObj() { let obj = { sex:"男", age:18 }; let val = ""; //此处val是安全的,外部是无法修改的 let o = Object.defineProperty(obj, "key", { configurable: true, enumerable: true, get: function () { return val || 0; }, set: function (n) { val = n; }, }); return o; //每个对象都是新的 } let aa = getObj(); console.log(aa.sex); //返回性别