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学习总结之jQuery事件
Jun 30 Javascript
使用Chrome浏览器调试AngularJS应用的方法
Jun 18 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
jQuery对table表格进行增删改查
Dec 22 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
Jan 18 Javascript
Node.js实现文件上传的示例
Jun 28 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 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
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python开发之函数定义实例分析
2015/11/12 Python
Python优先队列实现方法示例
2017/09/21 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
通过实例解析python描述符原理作用
2020/01/22 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
pytorch数据预处理错误的解决
2020/02/20 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
Python colormap库的安装和使用详情
2020/10/06 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
财务人员个人自荐信范文
2013/09/26 职场文书
检察官就职演讲稿
2014/01/13 职场文书
中职招生先进个人材料
2014/08/31 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
学习nginx基础知识
2021/09/04 Servers