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 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
Oct 12 Javascript
JavaScript获取页面中超链接数量的方法
Nov 09 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
详解Vue路由开启keep-alive时的注意点
Jun 20 Javascript
vue组件之Alert的实现代码
Oct 17 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
Jan 31 Javascript
纯javascript实现选择框的全选与反选功能
Apr 08 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
第七节--类的静态成员
2006/11/16 PHP
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
jQuery实现跨域
2015/02/03 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python批量发送post请求的实现代码
2018/05/05 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python2与Python3的区别点整理
2019/12/12 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
Python实现简单的2048小游戏
2021/03/01 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
珠宝店促销方案
2014/03/21 职场文书
消防演习通知
2015/04/25 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
学校运动会简讯
2015/07/20 职场文书
学校食堂管理制度
2015/08/04 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
详解Python内置模块Collections
2022/03/22 Python