封装的目的是为了将信息隐藏。JavaScript中并没有像其他编程语言那样提供相应的关键字来支持,所以Javascript只能依赖变量的作用域来实现封装特性,只能模拟出public和private两种封装特性。 除了ECMAScript6中提供的let之外,通常我们用函数来创建作用域:
var myObject = (function(){
var name = 'Tom'; // 私有变量private
return {
getName: function(){ // 公开方法
return name;
},
setName: function(str){
name = str;
}
}
})();
window.onload = function(){
alert(myObject.getName()); // Tom
alert(myObject.name); // undefined
};
封装使得对象之间的耦合变松散,对象之间只通过暴露的API接口来通信。