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 相关文章推荐
JQuery 插件制作实践 xMarquee插件V1.0
Apr 02 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
Jan 18 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 Javascript
vue框架中props的typescript用法详解
Feb 17 Javascript
浅谈vue的第一个commit分析
Jun 08 Javascript
jquery实现拖拽小方块效果
Dec 10 jQuery
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 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
实用函数2
2007/11/08 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
如何用python整理附件
2018/05/13 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python reques接口测试框架实现代码
2020/07/28 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
医学生自我评价
2014/01/27 职场文书
集体婚礼策划方案
2014/02/22 职场文书
出国留学计划书
2014/04/27 职场文书
建筑安全生产目标责任书
2014/07/23 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
python scipy 稀疏矩阵的使用说明
2021/05/26 Python