Javascript类定义语法,私有成员、受保护成员、静态成员等介绍


Posted in Javascript onDecember 08, 2011

其实通俗的讲类就是对象的模板,为了增强JS的OO特性,受mootoos框架启发我们可以使用一个JSON对象来描述这个对象的模板。在这个模板中我们可以模拟实现私有成员,受保护成员,静态成员。
这是一个在JS中模拟的类定义语法,代码中Class是一个自定义函数,它接受两个参数,第一个参数是类名、第二个参数是一个JSON用来一个对象的模板。在这个JSON对象中其中字段 "extend",,"initialize","static" 为一些预定义关键字,所表示的意义与基于类的传统OO语言相似。字段accessabe用来描述一个对象成员的可访问性,取值为("private","protected","public")在Class函数中会对这些关键字进行特殊处理,使其所修饰的成员具有相应的访问权限。

Class("Person" ,{ 
//继承 
extend: Animal, 
//构造函数 
initialize:function(name,sex){ 
this.name = name; 
this.sex = sex; 
Person.count++; 
}, 
//静态成员 
static:{ 
count: { 
accessabe:"private", 
value: "" 
} 
}, 
//实例成员 
age: {//私有属性成员 
accessabe:"private", 
value:0 
}, 
//公用属性 
name: { 
accessabe:"public", 
value:"" 
}, 
sex:{ 
accessabe:"public", 
value: "" 
}, 
//方法 
sleep: {//受保护方法 
accessabe:"protected", 
value: function(){ 
} 
}, 
say: {//公用方法 
accessabe:"public", 
value: function(){ 
retun (this.age-1) 
} 
} 
}); 
//调用 
var xiaom = new Person("小明","男"); 
xiaom.age //私有属性不能访问 
xiaom.sleep() //受保护方法不能访问 
xiaom.say() //公用方法可以访问
Javascript 相关文章推荐
html读出文本文件内容
Jan 22 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
js实现的点击数量加一可操作数据库
May 09 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 Javascript
Vue.js基础知识汇总
Apr 27 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
ReactNative短信验证码倒计时控件的实现代码
Jul 20 Javascript
原生JS实现萤火虫效果
Mar 07 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
Dec 08 #Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 #Javascript
基于jquery的代码显示区域自动拉长效果
Dec 07 #Javascript
5个javascript的数字格式化函数分享
Dec 07 #Javascript
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 #Javascript
autoPlay 基于jquery的图片自动播放效果
Dec 07 #Javascript
浅析Prototype的模板类 Template
Dec 07 #Javascript
You might like
第七节 类的静态成员 [7]
2006/10/09 PHP
php+javascript的日历控件
2009/11/19 PHP
php下获取http状态的实现代码
2014/05/09 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
javascript html 静态页面传参数
2009/04/10 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
vue debug 二种方法
2018/09/16 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
医学院四年学习生活的自我评价
2013/11/06 职场文书
代理协议书
2014/04/22 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
婚宴新娘致辞
2015/07/28 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle