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 相关文章推荐
JS启动应用程序的一个简单例子
May 11 Javascript
jquery中实现标签切换效果的代码
Mar 01 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
Apr 02 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
vue 使用vue-i18n做全局中英文切换的方法
Oct 29 Javascript
vue  directive定义全局和局部指令及指令简写
Nov 20 Javascript
简单使用webpack打包文件的实现
Oct 29 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 Javascript
JavaScript实现简单的弹窗效果
May 19 Javascript
微信小程序收藏功能的实现代码
Jun 19 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
windows中为php安装mongodb与memcache
2015/01/06 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
python实现调用其他python脚本的方法
2014/10/05 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
python3排序的实例方法
2020/10/20 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
自我评价怎么写正确呢?
2013/12/02 职场文书
高校教师岗位职责
2014/03/18 职场文书
后备干部培训方案
2014/05/22 职场文书
迟到检讨书范文
2015/01/27 职场文书
三八节活动简报
2015/07/20 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
matplotlib画混淆矩阵与正确率曲线的实例代码
2021/06/01 Python
四十九个javascript小知识实用技巧
2021/11/20 Javascript
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js