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 相关文章推荐
JSON 学习之完全手册 图文
May 29 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
Apr 04 Javascript
node.js中的buffer.write方法使用说明
Dec 10 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
JavaScript代码实现简单计算器
Dec 27 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图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python 的描述符 descriptor详解
2016/02/27 Python
python实现按任意键继续执行程序
2016/12/30 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
设置python3为默认python的方法
2018/10/31 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python障碍式期权定价公式
2019/07/19 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
python3.8下载及安装步骤详解
2020/01/15 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
什么是Web Service?
2012/07/25 面试题
住房公积金接收函
2014/01/09 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
大国崛起观后感
2015/06/02 职场文书
工作后的感想
2015/08/07 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
利用Python+OpenCV三步去除水印
2021/05/28 Python
react antd实现动态增减表单
2021/06/03 Javascript
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python