作为对象唯一属性名 属性私有化-数据保护
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())