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 浏览器判断实现函数
Aug 20 Javascript
web性能优化之javascript性能调优
Dec 28 Javascript
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
json的结构与遍历方法实例分析
Apr 25 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
详解Vue 多级组件透传新方法provide/inject
May 09 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
May 06 Javascript
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
用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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python学习之os模块及用法
2020/06/03 Python
如何用python处理excel表格
2020/06/09 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
打架检讨书2000字
2014/02/22 职场文书
给全校老师的建议书
2014/03/13 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis