如何实现JavaScript中的属性私有化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计294个文字,预计阅读时间需要2分钟。
第一种+利用闭包+函数自执行+创建+Person+构造函数+:
var Person=(function(name, gender) { var _gender; function P(name, gender) { this.name=name; _gender=gender; } P.prototype.getGender=function() { return _gender; }; return P;})();
var p1=new Person();
第一种 利用闭包+函数自执行
var Person = (function(name, gender){var _gender;
function P(name, gender){
this.name = name;
_gender = gender;
}
P.prototype.getGender = function(){
return _gender;
}
return P;
})()
var p1 = new Person('abc', '女');
console.log(p1); // P { name: 'abc' }
console.log(p1.gender); // undefined
console.log(p1.getGender()); //女
第二种 利用ES6 新的数据类型 Symbol
var Person = (function(name, gender){var g = Symbol('gender');
function P(name, gender){
this.name = name;
_gender = gender;
this[g] = gender;
}
P.prototype.getGender = function(){
return this[g];
}
return P;
})()
var p1 = new Person('abc', '女');
console.log(p1); //P { name: 'abc', [Symbol(gender)]: '女' }
console.log(p1.gender); //undefined
console.log(p1.getGender()); //女
2 class + Symbol
class Person{constructor(name, gender){
this.name = name;
this[Symbol('gender')] = gender;
}
getGender(){
return this.gender;
}
}
let p = new Person('xiaoh','男');
console.log(p); // Person { name: 'xiaoh', [Symbol(gender)]: '男' }
console.log(p[Symbol('gender')]); //undefined
本文共计294个文字,预计阅读时间需要2分钟。
第一种+利用闭包+函数自执行+创建+Person+构造函数+:
var Person=(function(name, gender) { var _gender; function P(name, gender) { this.name=name; _gender=gender; } P.prototype.getGender=function() { return _gender; }; return P;})();
var p1=new Person();
第一种 利用闭包+函数自执行
var Person = (function(name, gender){var _gender;
function P(name, gender){
this.name = name;
_gender = gender;
}
P.prototype.getGender = function(){
return _gender;
}
return P;
})()
var p1 = new Person('abc', '女');
console.log(p1); // P { name: 'abc' }
console.log(p1.gender); // undefined
console.log(p1.getGender()); //女
第二种 利用ES6 新的数据类型 Symbol
var Person = (function(name, gender){var g = Symbol('gender');
function P(name, gender){
this.name = name;
_gender = gender;
this[g] = gender;
}
P.prototype.getGender = function(){
return this[g];
}
return P;
})()
var p1 = new Person('abc', '女');
console.log(p1); //P { name: 'abc', [Symbol(gender)]: '女' }
console.log(p1.gender); //undefined
console.log(p1.getGender()); //女
2 class + Symbol
class Person{constructor(name, gender){
this.name = name;
this[Symbol('gender')] = gender;
}
getGender(){
return this.gender;
}
}
let p = new Person('xiaoh','男');
console.log(p); // Person { name: 'xiaoh', [Symbol(gender)]: '男' }
console.log(p[Symbol('gender')]); //undefined

