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 相关文章推荐
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
js如何取消事件冒泡
Sep 23 Javascript
JavaScript中输出标签的方法
Aug 27 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
在vue中获取dom元素内容的方法
Jul 10 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
用图片替换checkbox原始样式并实现同样的功能
Nov 15 Javascript
微信公众号开发之微信支付代码记录的实现
Oct 16 Javascript
JavaScript 接口原理与用法实例详解
May 12 Javascript
简单了解JavaScript作用域
Jul 31 Javascript
javascript实现京东登录显示隐藏密码
Aug 02 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
BootStrap数据表格实例代码
2017/09/13 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
[52:15]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS LGD-GAMING
2014/05/23 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
python利用beautifulSoup实现爬虫
2014/09/29 Python
python使用matplotlib绘制热图
2018/11/07 Python
Python对excel文档的操作方法详解
2018/12/10 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
详解python读取image
2019/04/03 Python
python中append实例用法总结
2019/07/30 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
python如何删除文件、目录
2020/06/23 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
详解python datetime模块
2020/08/17 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
什么是数据抽象
2016/11/26 面试题
蜜蜂引路教学反思
2014/02/04 职场文书
学校欢迎标语
2014/06/18 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
护士求职简历自我评价
2015/03/10 职场文书
Python使用protobuf序列化和反序列化的实现
2021/05/19 Python
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL