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 相关文章推荐
javascript实现动态CSS换肤技术的脚本
Jun 29 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
Nov 07 Javascript
对于this和$(this)的个人理解
Sep 08 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
js控制网页背景音乐播放与停止的方法
Feb 06 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
js中不同的height, top的区别对比
Sep 24 Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 Javascript
mac上node.js环境的安装测试
Jul 03 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
vue+axios+promise实际开发用法详解
Oct 15 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
js下函数般调用正则的方法附代码
2008/06/22 PHP
PHP控制网页过期时间的代码
2008/09/28 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
高中学生干部学习的自我评价
2014/02/21 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
早读课迟到检讨书
2014/09/25 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
法院执行局工作总结
2015/08/11 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android