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插件tipswindown与hintbox冲突
Nov 05 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
javascript中tostring()和valueof()的用法及两者的区别
Nov 16 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
AngularJS基础 ng-model 指令详解及示例代码
Aug 02 Javascript
vue.js表格分页示例
Oct 18 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
详解JavaScript的this指向和绑定
Sep 08 Javascript
vue 导出文件,携带请求头token操作
Sep 10 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
php5中类的学习
2008/03/28 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
2013/06/24 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python的多态性实例分析
2015/07/07 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
节水倡议书
2015/01/19 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
golang为什么要统一错误处理
2022/04/03 Golang