symbol 的用处

757 阅读1分钟

作为对象唯一属性名 属性私有化-数据保护

    function Person (name, gender) {
        this.name = name;
        this.gender = gender
    }
    var p1 = new Person('张三', '男')
    console.log(p1.gender) // 这里是可以访问和修改的

    // 但是我们一般情况下并不能修改 性别 通过保护私有数据
    let Person = (function () {
        let _gender = Symbol('gender')
        let p = function (name, gender) {
            this.name = name;
            this[_gender] = gender
        }
        // _gender 玩不访问不到, 所以使用 接口暴漏
        p.prototype.getGender = function () {
            return this[_gender]
        }
        return p
    })()

    let p1 = new Person('张三', '男')
    console.log(p1.getGender())