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小问题说明
Sep 26 Javascript
使用js对select动态添加和删除OPTION示例代码
Aug 12 Javascript
使用apply方法实现javascript中的对象继承
Dec 16 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
Nov 25 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
纯JS单页面赛车游戏制作代码分享
Mar 03 Javascript
JavaScript自定义文本框光标
Mar 05 Javascript
Angularjs实现页面模板清除的方法
Jul 20 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
Jul 24 Javascript
详解基于原生JS验证表单组件xy-form
Aug 20 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 cc攻击代码与防范方法
2012/10/18 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js中document.write的那点事
2014/12/12 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
高中生学习的自我评价
2013/12/14 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
mysql 子查询的使用
2022/04/28 MySQL
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS