在js方法里面定义变量和方法,外部是无法访问得。如何让外部访问到方法内部定义的变量和方法,通过闭包可以实现。
function MyObject() {
// 私有变量和私有函数
let privateVariable = 10;
function privateFunction() {
return false;
}
// 特权方法
this.publicMethod = function() {
privateVariable++;
return privateFunction();
};
}
let ob = new myObject()
console.log(ob);
console.log(ob.privateVariable);
console.log(ob.publicMethod()); //通过调用publicMethod,可以获取到私有变量和方法
js实现单例(模块模式)
let singleton = function () {
//私有属性
let privateVariable = 10
//私有方法
function privateFunction () {
return privateVariable
}
//特权,共有属性和方法
return {
publicProperty: true,
publicMethod() {
privateVariable++
return privateFunction()
}
}
}();
console.log(singleton.publicMethod()); //11
//通过singleton调用publicMethod(),也能获取到方法内的私有变量和方法