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选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
javascript 原型链维护和继承详解
Nov 26 Javascript
JavaScript数值千分位格式化的两种简单实现方法
Aug 01 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
AngularJS中ng-class用法实例分析
Jul 06 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
element-ui table组件如何使用render属性的实现
Nov 04 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
利用vue3+ts实现管理后台(增删改查)
Oct 30 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使用glob函数遍历文件和目录详解
2016/09/23 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
浅谈用VSCode写python的正确姿势
2017/12/16 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
同学聚会老师邀请函
2014/01/28 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
社区党建工作方案
2014/06/10 职场文书
政工例会汇报材料
2014/08/26 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
python神经网络ResNet50模型
2022/05/06 Python