手写const
// 1. 自定义容器充当数据的存储
let obj = {}
function getConst(key, val) {
obj[key] = val;
Object.defineProperty(obj, key, {
value: val, // 传进来的值
writable: false, //是否可修改改属性值
configurable: false, //配置信息是否可修改
enumerable: true, //是否可枚举
})
};
getConst("age", 10)
obj.age = 20;
console.log(obj); // 10 未被修改
console.log('================================================================');
// 2.全局 window
function getConst(key, val) {
window[key] = val;
Object.defineProperty(window, key, {
get: function () { //如果设置了 set 或 get, 就不能设置 writable 和 value 中的任何一个,否则报错
return constVal;
},
configurable: false, //配置信息是否可修改
enumerable: true, //是否可枚举
})
};
getConst("age", 10)
age = 20;
console.log(age); // 10 未被修改