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 相关文章推荐
用js实现计算加载页面所用的时间
Apr 02 Javascript
jQuery 插件开发指南
Nov 14 Javascript
jquery使用经验小结
May 20 Javascript
JavaScript 常见安全漏洞和自动化检测技术
Aug 21 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
Nov 30 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
在node中如何使用 ES6
Apr 22 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
Aug 12 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
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
基于mysql的论坛(4)
2006/10/09 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
巧用canvas
2017/01/21 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
python同时给两个收件人发送邮件的方法
2015/04/30 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
《长相思》听课反思
2014/04/10 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
感谢信怎么写
2015/01/21 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫
Nginx跨域问题解析与解决
2022/08/05 Servers