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 相关文章推荐
JavaScript 中的replace方法说明
Apr 13 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
$("").click与onclick的区别示例介绍
Sep 25 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
javascript实现京东快递单号的查询效果
Nov 30 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 网上商城促销设计实例代码
2012/02/17 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
Java中final关键字详解
2015/08/10 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
javaScript语法总结
2016/11/25 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
Python正则表达式匹配HTML页面编码
2015/04/08 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
python 网络编程常用代码段
2016/08/28 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
幼儿教育感言
2014/02/05 职场文书
销售代理协议书
2014/09/30 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Redis命令处理过程源码解析
2022/02/12 Redis
无线电通信名词解释
2022/02/18 无线电