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 Math对象
Aug 13 Javascript
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
jQuery中index()方法用法实例
Dec 27 Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 Javascript
jQuery Ajax全解析
Feb 13 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
在vue中实现给每个页面顶部设置title
Jul 29 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
PHP中的替代语法介绍
2015/01/09 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
Javascript 实现图片无缝滚动
2014/12/19 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
dataframe设置两个条件取值的实例
2018/04/12 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python游戏地图最短路径求解
2019/01/16 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
C,C++的几个面试题小集
2013/07/13 面试题
毕业生欢送会主持词
2014/03/31 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL