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 相关文章推荐
firefox和IE系列的相关区别整理 以备后用
Dec 28 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
JS控件的生命周期介绍
Oct 22 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 Javascript
简单实现vue中的依赖收集与响应的方法
Feb 18 Javascript
vue实现搜索功能
May 28 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
Jul 03 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封装的MSSql操作类完整实例
2016/05/26 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
numpy排序与集合运算用法示例
2017/12/15 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
Django web框架使用url path name详解
2019/04/29 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
应届护士推荐信
2013/11/16 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
python实现简单区块链结构
2021/04/25 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL