ES6 const 特点:
原理:
var const_customer = function(param, value) {
// 目前是在浏览器端测试全局对象window,如果是在node 环境全局对象global
var _global = window;
var KEY_WORD = ['const', 'let', 'var','class', 'return']; //关键字列表(不全)
var REG_NUMBER = '^[1-9][0-9]*([.][0-9]+)?$|0' ; //数字正则表达式
var _reg = new RegExp(REG_NUMBER)
//检测键值是否存在并且被支持
if(!param||_reg.test(parseFloat(param))||KEY_WORD.indexOf(param) > -1) {
throw new Error(`Unexpected token: ${param}`);
}
//检测是否被定义
if(_global.hasOwnProperty(param)) {
throw new Error(`${param} has already been declared !`);
}
_global[param] = value;
Object.defineProperty(_global, param, {
enumerable: false,
configurable: false,
get: function () {
return value
},
set: function (data) {
// 检测赋值异常
if (_global.hasOwnProperty(param)) {
throw new Error(`${param} is read-only!`);
} else {
return value
}
}
})
}
//功能测试
const_customer('TEST', "test_value");
console.log(TEST) // test_value
const_customer('TEST', "test_value"); // TEST has already been declared !
TEST = "TEST"; // Uncaught Error: TEST is read-only!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。