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 Cookie显示用户上次访问的时间和次数
Dec 08 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
一个网马的tips实现分析
Nov 28 Javascript
用方法封装javascript的new操作符(一)
Dec 25 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
JavaScript实现公历转农历功能示例
Feb 13 Javascript
微信小程序日历组件calendar详解及实例
Jun 08 Javascript
JavaScript创建对象的七种方式(推荐)
Jun 26 Javascript
Angular实现的进度条功能示例
Feb 18 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
Jun 19 Javascript
vue项目中自定义video视频控制条的实现代码
Apr 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
2015/11/10 PHP
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
Python删除空文件和空文件夹的方法
2015/07/14 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
python实现微信打飞机游戏
2020/03/24 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
政府法律服务方案
2014/06/14 职场文书
谢师宴答谢词
2015/01/05 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
浅谈Python数学建模之整数规划
2021/06/23 Python
2022年四月新番
2022/03/15 日漫
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers