Javascript 面向对象(一)(共有方法,私有方法,特权方法)


Posted in Javascript onMay 23, 2012

私有方法:私有方法本身是可以访问类内部的所有属性的,即私有属性和公有属性。但是私有方法是不可以在类的外部被调用。

私有方法写法:

function myClass () { 
var private_attribute = initial_value; 
function private_method () { } 
var private_method2 = function () { } 
}

实例showpet()就是一个私有方法
var pet=function(){var temp=""
//私有变量只有在函数或者对象作用域范围内能访问 
function showpet(){ 

alert("123") 
} 
showpet();//私有方法可以在函数作用域范围内使用。 
} 
showpet();//会出错 
pet.showpet()//还是不能这样调用 
var Penguin=new pet() //实例化一个pet对象 
Penguin.showpet()//不好意思这样子还是不能让你调用。

公有方法:

1.公有方法是可以在类的外部被调用的,

2.但是它不可以访问类的私有属性。

3.公有方法必须在类的内部或者外部通过类的prototype属性添加。

公有方法写法:

function myClass () { 
this.public_attribute = initial_value; 
this.prototype.public_method = function () { } 
} 
myClass.prototype.public_attribute2 = initial_value; 
myClass.prototype.public_method2 = function () { }

实例:
var pet=function(){ 
function showname(){//私有方法 
alert(this.name) 
} 

this.show=function(){ //如果这里不理解,请注意这个方法下面就要介绍了。 

showname(); 

} 
} 
pet.prototype.setname=function(str){ 
name=str; 
} 
var Penguin=new pet() 

Penguin.setname("Penguin");//添加实例的name值为Penguin 

Penguin.show(); //弹出Penguin 

Penguin.setname("wind");//添加实例的name值为wind 

Penguin.show(); //弹出wind

特权方法:

1.特权方法是可以在类的外部被调用的,

2.但是它可以访问类的私有属性,并且也是可以访问类的公有属性,可以勉强的认为它是一种特殊的公有方法。

3.但是它与上面的公有方法的声明与定义方式不同。特权方法必须在类的内部声明定义。

特权方法写法:

function myClass () { 
this.privileged_method = function () { } 
}

实例
var pet=function(){ 
function showname(){//私有方法 
alert(this.name) 
} 
this.show=function(){//通过使用this关键字定义一个特权方法。 
showname(); //在特权方法中访问私有方法; 
} 
} 
pet.prototype.setname=function(str){ 
name=str; 
} 
var Penguin=new pet();//实例化一个pet对象 
Penguin.setname("Penguin");//调用公有方法修改 
Penguin.show(); //调用特权方法访问私有方法,弹出name

下面是我自己的一些理解:通过对上面这些的学习,结合我自己看的书。对于公有,私有,特权的理解如下:
公有方法:就是所有通过该类实例化出来的对象,共同都拥有或者说都可以使用的方法。一般把共用的方法,都放在“原型对象“当中,如果放在构造函数中,会重复创建共同的方法。

私有方法:不能在外部调用。
特权方法:利用的闭包原理,即通过作用域链,让内部函数能够访问外部函数的变量对象(即该类的私有变量、私有方法)。(作用域链,闭包,变量对象;这三个在《Javascript高级程序中有讲解》)

Javascript 相关文章推荐
云网广告中的代码,提示出错,大家找找
Nov 21 Javascript
JS图片根据鼠标滚动延时加载的实例代码
Jul 13 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
vue中动态绑定表单元素的属性方法
Feb 23 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
详解vue-router导航守卫
Jan 19 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 Javascript
Javascript数组及类数组相关原理详解
Oct 29 Javascript
k8s node节点重新加入master集群的实现
Feb 22 Javascript
Javascript 闭包引起的IE内存泄露分析
May 23 #Javascript
基于jQuery的图片左右无缝滚动插件
May 23 #Javascript
判断多个input type=file是否有已经选择好文件的代码
May 23 #Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 #Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 #Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
May 23 #Javascript
jquery.pagination.js 无刷新分页实现步骤分享
May 23 #Javascript
You might like
php递归遍历删除文件的方法
2015/04/17 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
JS backgroundImage控制
2009/05/19 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
2019/12/10 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
python内存动态分配过程详解
2019/07/15 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
前端隐藏出边界内容的实现方法
2016/04/14 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
县优秀教师事迹材料
2014/01/31 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
校园环保标语
2014/06/13 职场文书
刑事起诉书范文
2015/05/19 职场文书
焦裕禄观后感
2015/06/03 职场文书
工作表现证明
2015/06/15 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js