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 相关文章推荐
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
原生javascript实现匀速运动动画效果
Feb 26 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
js 定位到某个锚点的方法
Nov 19 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 Javascript
js实现自定义进度条效果
Mar 15 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
利用layer实现表单完美验证的方法
Sep 26 Javascript
浅析JavaScript 函数防抖和节流
Jul 13 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
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购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
js自定义回调函数
2015/12/13 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
会展中心部门工作职责
2013/11/27 职场文书
竞职演讲稿范文
2014/01/11 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
会议欢迎词范文
2015/01/27 职场文书
升职自我推荐信范文
2015/03/25 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python