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 相关文章推荐
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
jquery获取tr中控件值并操作tr实现思路
Mar 27 Javascript
jQuery弹性滑动导航菜单实现思路及代码
May 02 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
Dec 17 Javascript
Javascript自执行匿名函数(function() { })()的原理浅析
May 15 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
openLayer4实现动态改变标注图标
Aug 17 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
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中用max()方法求最大值的介绍
2015/05/15 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
五年级语文教学反思
2014/01/30 职场文书
《影子》教学反思
2014/02/21 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
mysql查找连续出现n次以上的数字
2022/05/11 MySQL