使用es5实现一个const

463 阅读1分钟

直接上代码:

    function _const(data, value) {
        <!-- 全局window 挂在data -->
        window.data = value;
        Object.defineProperty(window, data, {
            enumberable: false,
            configurable: false,
            get: function () {
                return value
            },
            set: function(data) {
                if (data !== value) {
                    throw new TypeError("Assagement to constant variable")
                } else {
                    return value
                }    
            } 
        })
    }
    
    
    <!--测试用例-->
    _const("a", { age: 18 })
    console.log(a);
    a.age = 20
    console.log(a);