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中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
开发Vue树形组件的示例代码
Dec 21 Javascript
ES6 系列之 Generator 的自动执行的方法示例
Oct 19 Javascript
如何在 Vue 中使用 JSX
Feb 14 Vue.js
使用react+redux实现计数器功能及遇到问题
Jun 02 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静态新闻列表自动生成代码
2007/06/14 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
asp批量修改记录的代码
2008/06/25 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript面试题大全(推荐)
2016/09/22 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
python解析json实例方法
2013/11/19 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
python实现矩阵打印
2019/03/02 Python
Python中logger日志模块详解
2020/08/04 Python
python设置中文界面实例方法
2020/10/27 Python
Python基于Faker假数据构造库
2020/11/30 Python
html5的localstorage详解
2017/05/09 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
简单的项目建议书模板
2014/03/12 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书