/*=======闭包模式——静态私有变量,缺点:所有实例共享静态变量,实例没有私有变量=======*/
function myObject(){
//this.name = "asdfasdf";实例公有变量
};
(function(){
//静态私有变量
var name = "";
myObject.prototype.setName = function(str){
name = str;
};
myObject.prototype.write = function(){
console.log(name);
}
})();
var m1 = new myObject();
var m2 = new myObject();
m1.setName("licheng");
m2.write();
/*==================================================*/
/*=======构造函数模式——私有变量,缺点:每次产生实例对象都要生成同样一组新方法(方法就是对象,对象占内存),方法应该共享=======*/
function s(){
//私有变量
var name = "licheng";
this.setName=function(str){
name = str;//通过闭包特性,有权访问其作用域链上一层活动对象中的变量name
};
this.getName = function(){
console.log(name);
};
}
var s1 = new s();
var s2 = new s();
s1.setName("xiaofei");
s2.getName();
s1.write();
//以上两个模式都存在共同的缺点:多查找作用域链中的一个层次,就会在一定程度上影响查找速度,而这正是使用闭包和私有变量的一个明显//不足之处。