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 相关文章推荐
最近项目写了一些js,水平有待提高
Jan 31 Javascript
jQuery 学习 几种常用方法
Jun 11 Javascript
Javascript 错误处理的几种方法
Jun 13 Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
浅析js的模块化编写 require.js
Dec 07 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
读懂CommonJS的模块加载
Apr 19 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
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
jQuery的bind()方法使用详解
2015/07/15 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
快速了解python leveldb
2018/01/18 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
办公室文员自荐书
2014/02/03 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
干部鉴定材料
2014/05/18 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
优秀班主任材料
2014/12/16 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
python可视化大屏库big_screen示例详解
2021/11/23 Python
python中的getter与setter你了解吗
2022/03/24 Python