JS不具备传统的面向对象的机制,它基于原型继承的方式。成员并没有公共、私有只说。但是开发中,很经常会遇到一些尴尬的情况,某个方法我不想让外部调用,甚至不想暴露给外部。怎么办?而JS中也没有私有成员的声明机制,所以程序员们只好绞尽脑汁想出各种方法,以下是常见的两种,本来我还多写了两种,但是那两种是自己另外想出来的,实现起来挺麻烦,所以就不拿出来献丑了:
//创建私有变量
//Method-1
var a = function() {
function _private() {
console.log('here is a private method');
}
this.pub = function() {
_private();
}
}
var b = new a();
b.pub();
//Method-2
var a = function() {
this.name = 'hello';
}
a.prototype = (function() {
function _private() {
console.log('here is a private method');
}
function pub() {
_private();
}
return {
pub: pub,
}
})();
var b = new a();
b.pub();