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 相关文章推荐
用jquery与css打造个性化的单选框和复选框
Oct 20 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
Oct 12 Javascript
node.js连接mysql与基本用法示例
Jan 05 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
May 10 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
vue2路由基本用法实例分析
Mar 06 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 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中unserialize返回false的解决方法
2014/09/22 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
设定php简写功能的方法
2019/11/28 PHP
JavaScript 参考教程
2006/12/29 Javascript
js判断样式className同时增加class或删除class
2013/01/30 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
javascript表单验证大全
2015/08/12 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
详谈js模块化规范
2017/07/07 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
JavaScript实现图片放大镜效果
2019/06/27 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python动态进度条的实现代码
2019/07/03 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
python修改FTP服务器上的文件名
2019/09/11 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python2与Python3的区别详解
2020/02/09 Python
公司业务主管岗位职责
2013/12/07 职场文书
家长评语大全
2014/01/22 职场文书
小学毕业感言300字
2014/02/19 职场文书
意向协议书范本
2014/04/23 职场文书
医院义诊活动总结
2014/07/04 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
公司员工体检通知
2015/04/21 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
Nginx源码编译安装过程记录
2021/11/17 Servers