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 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
javascript 导出数据到Excel(处理table中的元素)
Dec 18 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
一系列Bootstrap导航条使用方法分享
Apr 29 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
Sep 25 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 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实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
PHP中常用的魔术方法
2017/04/28 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
基于jQuery的倒计时插件代码
2011/05/07 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
利用Psyco提升Python运行速度
2014/12/24 Python
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
Python数组定义方法
2016/04/13 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
Django 多环境配置详解
2019/05/14 Python
python障碍式期权定价公式
2019/07/19 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
统计系教授推荐信
2014/02/28 职场文书
聚美优品励志广告词
2014/03/14 职场文书
食品采购员岗位职责
2014/04/14 职场文书
行政专员求职信范文
2014/05/03 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
2014年人事部工作总结
2014/12/03 职场文书