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 插件开发方法小结
Oct 23 Javascript
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
Oct 21 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
js document.write()使用介绍
Feb 21 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
JS实现的二叉树算法完整实例
Apr 06 Javascript
JS跳转手机站url的若干注意事项
Oct 18 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 Javascript
jQuery 实现扁平式小清新导航
Jul 07 jQuery
用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与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
跟我学Laravel之路由
2014/10/15 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
微信小程序实现登录注册tab切换效果
2020/12/29 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
python梯度下降算法的实现
2020/02/24 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
使用Python构造hive insert语句说明
2020/06/06 Python
python时间time模块处理大全
2020/10/25 Python
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
回复函格式及范文
2015/07/14 职场文书
毕业酒会致辞
2015/07/29 职场文书