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中对循环语句的优化技巧深入探讨
Jun 06 Javascript
JavaScript模拟数组合并concat
Mar 06 Javascript
BootStrap Fileinput的使用教程
Dec 30 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
js 动态生成html 触发事件传参字符转义的实例
Feb 14 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
JS中使用textPath实现线条上的文字
Dec 25 Javascript
Vue入门之数据绑定(小结)
Jan 08 Javascript
vue toggle做一个点击切换class(实例讲解)
Mar 13 Javascript
webpack手动配置React开发环境的步骤
Jul 02 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 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
IIS下PHP的三种配置方式对比
2014/11/20 PHP
CI框架常用方法小结
2016/05/17 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
python回调函数中使用多线程的方法
2017/12/25 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
战友聚会邀请函
2014/01/18 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
解除劳动合同协议书
2014/04/14 职场文书
端午节活动总结
2014/08/26 职场文书
刑事代理授权委托书
2014/09/17 职场文书
成绩单家长意见
2015/06/03 职场文书
西柏坡观后感
2015/06/08 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
Python函数中apply、map、applymap的区别
2021/11/27 Python
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
各种货币符号快捷输入
2022/02/17 杂记
Java 异步任务计算FutureTask
2022/04/28 Java/Android
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技