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 相关文章推荐
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
Javascript根据指定下标或对象删除数组元素
Dec 21 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
Sep 06 Javascript
Javascript中For In语句用法实例
May 14 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
Apr 01 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
vue+mock.js实现前后端分离
Jul 24 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 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合并数组中相同元素的方法
2014/11/13 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
python搜索包的路径的实现方法
2019/07/19 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
阳光体育:Sunny Sports(购买露营和远足设备)
2018/08/07 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
争先创优演讲稿
2014/09/15 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
如何写观后感
2015/06/19 职场文书
如何在Mac上通过docker配置PHP开发环境
2021/05/29 PHP