面试官:实现一下const叭。

255 阅读1分钟

const指定基本数据类型,不能修改。指定引用数据类型,代表的是指针,属性值可以修改。
具体可以用Object.defineProperty来实现

function myConst(obj, val) {
            window.obj = val;
            Object.defineProperty(window, obj, {
                enumerable: false,
                configurable: false,
                get() {
                    return val
                },
                set(newVal) {
                    if (newVal !== val) {
                        throw new Error()
                    } else {
                        return val
                    }
                }
            })
        }

        //测试
        myConst('a', { a: 123 })
        console.log(a);
        a.a = 12345
        console.log(a);

        myConst('b', 123)
        console.log(b);
        b = 23423;
        console.log(b);

image.png

image.png


记录记录!