zl程序教程

您现在的位置是:首页 >  前端

当前栏目

javascript中定义私有方法说明(privatemethod)

JavaScript方法 说明 定义 私有
2023-06-13 09:15:17 时间

一度以为在javascript的世界里,所有方法都是公有的,无法真正从技术上定义一个私有方法,今天又一次发现:其实我错了!

复制代码代码如下:

varPerson=function(name,sex){
   this.name=name;
   this.sex=sex;     
   var_privateVariable="";//私有变量    
   //构造器中定义的方法,即为私有方法
   functionprivateMethod(){   
       _privateVariable="privatevalue";
       alert("私有方法被调用!私有成员值:"+_privateVariable);             
   }
   privateMethod();//构造器内部可以调用私有方法            
}

Person.prototype.sayHello=function(){
   alert("姓名:"+this.name+",性别:"+this.sex);
}

varp=newPerson("菩提树下的杨过","男");      
p.sayHello();

//p.privateMethod();//这里将报错,私成方法无法被实例调用
alert(p._privateVariable);//显示:undefined

说明:类的构造函数里定义的function,即为私有方法;而在构造函数里用var声明的变量,也相当于是私有变量。(不过类比于c#这类强类型语言中的私有成员概念还是有区别的,比如无法在非构造函数以外的其它方法中调用)

类似的,我们还能实现类似set,get属性的封装

复制代码代码如下:

varPerson=function(){    
   varsalary=0.0;

   this.setSalary=function(value){
       salary=value;
   }

   this.getSalary=function(){
       returnsalary;
   }
}

varp=newPerson();

p.setSalary(1000);
alert(p.getSalary());//返回1000
alert(p.salary);//返回undefined

注:js中的"变量作用域","函数调用上下文(this)","闭包","原型链"这几个概念确实值得花点工夫理解,这几道坎跨过去了,js新手(比如我辈之流)的水平相信也将小上一个新台阶.