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


Posted in Javascript onJanuary 27, 2014

一度以为在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新手(比如我辈之流)的水平相信也将小上一个新台阶.
Javascript 相关文章推荐
js点击更换背景颜色或图片的实例代码
Jun 25 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
Javascript闭包(Closure)详解
May 05 Javascript
JS面试题---关于算法台阶的问题
Jul 26 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
extjs简介_动力节点Java学院整理
Jul 17 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
Dec 16 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
基于Three.js实现360度全景图片
Dec 30 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
用javascript替换URL中的参数值示例代码
Jan 27 #Javascript
jquery选择器之基本过滤选择器详解
Jan 27 #Javascript
jquery选择器之层级过滤选择器详解
Jan 27 #Javascript
jquery选择器之内容过滤选择器详解
Jan 27 #Javascript
jquery选择器之属性过滤选择器详解
Jan 27 #Javascript
jQuery自定义事件的简单实现代码
Jan 27 #Javascript
jQuery中bind与live的用法及区别小结
Jan 27 #Javascript
You might like
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python显示生日是星期几的方法
2015/05/27 Python
Python创建xml文件示例
2017/03/22 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
python Pygame的具体使用讲解
2017/11/03 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
编辑个人求职信范文
2013/09/21 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书