参考文章:https://www.cnblogs.com/jiejiejy/p/7666091.html
js 模拟封装
1、什么叫封装?
①方法的封装:将类内部的函数进行私有化处理,不对外提供接口,无法在类外部使用的方法,称为私有方法,即方法的封装。
②属性的封装:将类中的属性进行私有化处理,对外不能直接使用对象名访问(私有属性)。同时,需要提供专门用于设置和读取私有属性的set/get方法,让外部使用我们提供的方法,对属性进行操作。这就叫属性的封装。
2、注意:封装不是拒绝访问,而是限制访问。要求调用者,必须使用我们提供的set/get方法进行属性的操作,而不是直接拒绝操作。
因此,单纯的属性私有化,不能称为封装!必须要有私有化后,提供对应的set/get方法。
function Person(name,age1){
this.name=name;// this.age=age;
var age=0;
this.setAge=function(ages){
if(ages>0&&ages<=120){
age=ages;
}else{
alert("年龄赋值失败");
}
}
// 当实例化类拿到对象时,可以直接通过类名的()传入年龄,设置私有属性
if(age1!=undefined) this.setAge(age1);
this.getAge=function(){
return age;
}
this.sayTime=function(){
alert("我说当前时间是:"+getTime());
}
this.writeTime=function(){
alert("我写了当前时间是:"+getTime());
}
/*私有化的方法,只能在类内部被其他方法调用,而不能对外提供功能。这就是方法的封装*/
function getTime(){
return new Date();
}
}
var zhangsan=new Person("张三",99);
zhangsan.setAge(99);
alert("张三的年龄是"+zhangsan.getAge());
var lisi=new Person("李四",99);
lisi.setAge(110);
alert("李四的年龄是:"+lisi.getAge());