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 相关文章推荐
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
javascript控制frame,iframe的src属性代码
Dec 31 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
HTML5+jQuery实现搜索智能匹配功能
Mar 24 jQuery
JS跳转手机站url的若干注意事项
Oct 18 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
浅谈JavaScript闭包
Apr 09 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
返回上一个url并刷新界面的js代码
Sep 12 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
解决cPanel无法安装php5.2.17
2014/06/22 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
python复制文件代码实现
2013/12/23 Python
Python实现备份文件实例
2014/09/16 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
深入理解Django中内置的用户认证
2017/10/06 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
北大自主招生自荐信
2013/10/19 职场文书
物流管理毕业生自荐信
2013/10/24 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
教师自查自纠材料
2014/10/14 职场文书
先进党组织事迹材料
2014/12/26 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
基于Python实现对比Exce的工具
2022/04/07 Python