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 相关文章推荐
IE8 中使用加速器(Activities)
May 14 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
Jun 20 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
js控制文本框只输入数字和小数点的方法
Mar 10 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
Node.js中 __dirname 的使用介绍
Jun 19 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
详解vue表单——小白速看
Apr 08 Javascript
vue自定义全局共用函数详解
Sep 18 Javascript
js prototype和__proto__的关系是什么
Aug 23 Javascript
vue ssr+koa2构建服务端渲染的示例代码
Mar 23 Javascript
在vue中使用防抖函数组件操作
Jul 26 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中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php导出CSV抽象类实例
2014/09/24 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
js中哈希表的几种用法总结
2014/01/28 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
React中的refs的使用教程
2018/02/13 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python中itertools模块用法详解
2014/09/25 Python
python if not in 多条件判断代码
2016/09/21 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
详解python中的index函数用法
2019/08/06 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
Order by的几种用法
2013/06/16 面试题
应届生个人求职信模板
2013/11/26 职场文书
小学教师师德反思
2014/02/03 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
公司股东合作协议书
2014/09/14 职场文书
党员示范岗材料
2014/12/19 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python