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中几个重要的属性(this、constructor、prototype)介绍
May 19 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
jquery幻灯片插件bxslider样式改进实例
Oct 15 Javascript
JavaScript生成二维码图片小结
Dec 27 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
JavaScript获取当前时间向前推三个月的方法示例
Feb 04 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
微信小程序中使用echarts的实现方法
Apr 24 Javascript
js的Object.assign用法示例分析
Mar 05 Javascript
VUE项目axios请求头更改Content-Type操作
Jul 24 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
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
2013/06/14 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python3多线程基础知识点
2019/02/19 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python实现名片管理系统
2020/02/14 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
集团公司人力资源部岗位职责
2014/01/03 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书