functionBox() {var age = 100; //私有变量functionrun() {//私有函数return'运行中...';
}
this.get = function() {//对外公共的特权方法return age + run();
};
}
var box = new Box();
console.log(box.get());
2.通过构造方法传参来访问私有变量。
functionPerson(value) {var user = value; //这句其实可以省略this.getUser = function() {return user;
};
this.setUser = function(value) {
user = value;
};
}
但是对象的方法,在多次调用的时候,会多次创建。可以使用静态私有变量来避免这个问题。
3.静态私有变量
通过块级作用域(私有作用域)中定义私有变量或函数,同样可以创建对外公共的特权方法。
(function() {var age = 100;
functionrun() {return'运行中...';
}
Box = function() {}; //构造方法
Box.prototype.go = function() {//原型方法return age + run();
};
})();
var box = new Box();
console.log(box.go());
上面的对象声明,采用的是Box = function () {} 而不是function Box() {} 因为如果用后面这种,就变成私有函数了,无法在全局访问到了,所以使用了前面这种。
(function() {
var user = '';
Person = function (value) {
user = value;
};
Person.prototype.getUser = function () {
return user;
};
Person.prototype.setUser = function (value) {
user = value;
}
})();