JS特权方法定义作用以及与公有方法的区别


Posted in Javascript onMarch 18, 2013

定义特权方法
在构造函数内部通过this关键字定义的的方法,可以被实例化的对象继承所调用。

var Student = function(name) { 
var _name = name; //私有属性 
//特权方法 
this.getName = function() { 
return _name; 
}; 
this.setName = function(name) { 
_name = name; 
}; 
}; 
var s1 = new Student('zhangsan'); 
s1.getName(); //zhangsan

特权方法的作用
特权方法能够在构造函数外面公开访问(仅限于实例化的对象),而且还能够访问私有成员和方法,因此用来做为对象或者构造函数的接口最合适不过了,通过特权方法我们可以控制公有方法对私有属性或方法的访问。 在JS框架的扩展中有很多应用。
特权方法与公有方法的区别
相同点:1. 都可以在构造函数外部公开访问。2. 都可以访问公有属性
不同点:有2点
1. 每个实例都要拥有一份特权方法的副本(除在单例中使用外,需要考虑内存),而公有方法为所有实例共享
//创建Student对象实例 
var s1 = new Student('zhangsan'); 
var s2 = new Student('lisi'); 
//两实例的特权方法的引用不相同, 说明在对象实例化的时特权方法被重新创建 
console.log(s1.getName === s2.getName); //false

2. 特权方法可以访问私有属性和方法,而公有方法不能。
//为Student创建公有方法 
//公有方法不能访问私有属性 
Student.prototype.myMethod = function() { 
console.log(_name); //ReferenceError: _name is not defined 
}; 
s1.myMethod();

小结:特权方法作为构造函数的接口,公有方法可以通过特权方法访问私有属性和方法
Javascript 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
Javascript UrlDecode函数代码
Jan 09 Javascript
offsetParent 算法分析
Apr 05 Javascript
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
Jul 15 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
Javascript判断对象是否相等实现代码
Mar 18 #Javascript
jQuery+css实现图片滚动效果(附源码)
Mar 18 #Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 #Javascript
javascript定时变换图片实例代码
Mar 17 #Javascript
JS前端框架关于重构的失败经验分享
Mar 17 #Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 #Javascript
提交表单时执行func方法实现代码
Mar 17 #Javascript
You might like
常用PHP框架功能对照表
2014/10/23 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
Javascript的各种节点操作实例演示代码
2012/06/27 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python实现多层感知器
2019/01/18 Python
详解Python3 pandas.merge用法
2019/09/05 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
在keras中实现查看其训练loss值
2020/06/16 Python
一套带网友答案的.NET笔试题
2016/12/06 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
食品安全工作实施方案
2014/03/26 职场文书
作风整顿剖析材料
2014/09/30 职场文书
合作协议书范本
2014/10/25 职场文书
肖申克救赎观后感
2015/06/02 职场文书
谢师宴家长致辞
2015/07/27 职场文书
汽车销售员工作总结
2015/08/12 职场文书
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python