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 相关文章推荐
javascript之学会吝啬 精简代码
Apr 25 Javascript
基于jquery的跨域调用文件
Nov 19 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
js实现网页同时进行多个倒计时功能
Feb 25 Javascript
ES6的解构赋值实例详解
May 06 Javascript
微信小程序实现吸顶效果
Jan 08 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
实现获取http内容的php函数分享
2014/02/16 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
js构造函数、索引数组和属性的实现方式和使用
2014/11/16 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
vue中实现滚动加载更多的示例
2017/11/08 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
在Python中使用成员运算符的示例
2015/05/13 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
Python3爬虫学习入门教程
2018/12/11 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
python 怎样进行内存管理
2020/11/10 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
国际经济贸易专业推荐信
2013/11/06 职场文书
接待员岗位职责范本
2015/04/15 职场文书
匿名信格式范文
2015/05/27 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
2019秋季运动会口号
2019/06/25 职场文书
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫