zoukankan      html  css  js  c++  java
  • javascript中定义私有方法(private method)

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

    var Person = function(name,sex){
    	this.name = name;
    	this.sex = sex;		
    	var _privateVariable = "";//私有变量	
    	//构造器中定义的方法,即为私有方法
    	function privateMethod(){	
    		_privateVariable = "private value";
    		alert("私有方法被调用!私有成员值:" + _privateVariable);				
    	}
    	privateMethod(); //构造器内部可以调用私有方法			
    }
    
    Person.prototype.sayHello = function(){
    	alert("姓名:" + this.name + ",性别:" + this.sex);
    }
    
    var p = new Person("菩提树下的杨过","男");		
    p.sayHello();
    
    //p.privateMethod();//这里将报错,私成方法无法被实例调用
    alert(p._privateVariable);//显示: undefined
    

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

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

    var Person = function(){	
    	var salary = 0.0;
    
    	this.setSalary = function(value){
    		salary = value;
    	}
    
    	this.getSalary = function(){
    		return salary;
    	}
    }
    
    var p = new Person();
    
    p.setSalary(1000);
    alert(p.getSalary());//返回1000
    alert(p.salary);//返回undefined
    

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

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1675180.html
Copyright © 2011-2022 走看看