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据option的value值快速设定初始的selected选项
Aug 13 Javascript
Javascript 中文字符串处理额外注意事项
Nov 15 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
Apr 25 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
vue mounted组件的使用
Jun 18 Javascript
JS删除对象中某一属性案例详解
Sep 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
python自带的http模块详解
2016/11/06 Python
Python实现文件内容批量追加的方法示例
2017/08/29 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
为什么说python更适合树莓派编程
2020/07/20 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
什么是网络协议
2016/04/07 面试题
车间组长岗位职责
2013/12/20 职场文书
成人继续教育实施方案
2014/03/01 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
村干部培训班主持词
2014/03/28 职场文书
旅游安全协议书
2014/04/21 职场文书
学校工作推荐信范文
2014/07/11 职场文书
法人委托书范本格式
2014/09/15 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
2015年派出所工作总结
2015/04/24 职场文书
行政处罚事先告知书
2015/07/01 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers