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中如何处理引号编码"
Aug 15 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
jQuery插件Validation快速完成表单验证的方式
Jul 28 Javascript
js实现返回顶部效果
Mar 10 Javascript
基于构造函数的五种继承方法小结
Jul 27 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
vue中v-for通过动态绑定class实现触发效果
Dec 06 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
适合后台管理系统开发的12个前端框架(小结)
Jun 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
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
js获取单选框或复选框值及操作
2012/12/18 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
python Django模板的使用方法
2016/01/14 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
python版飞机大战代码分享
2018/11/20 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
护理毕业生自我鉴定
2014/02/11 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
python常见的占位符总结及用法
2021/07/02 Python