javascript 面向对象的JavaScript类


Posted in Javascript onMay 04, 2010

在上一节面 JavaScript 面向对象之命名空间 中说了怎么定义JavaScript命名空间,这一节来说下紧接着的一个概念——类。虽然JavaScript中没有class关键字,但作为开发人员我们一定要有这个思想。在C#中类可以分为实例类和静态类,JavaScript亦然。

一,定义实例类: 在上节中我定义了一个cnblogs.news的命名空间,现在就在此命名空间下定义一个名为Article类:

cnblogs.news.Article=function(){ 
var _this=this; 
this.title=null; 
this.content=null; 
this.show=function(){ 
document.write("<h1>"+_this.title+"</h1>"); 
document.write("<p>"+_this.content+"</p>"); 
} 
}

创建对象就和C#一样:
// 实例化一个对象 
var article =new cnblogs.news.Article(); 
// 给对象的属性赋值 
article.title="这是文章标题"; 
article.content="这是文章内容"; 
// 调用对象的方法 
article.show();

二,定义静态类:所谓静态类就是直接调用类的成员,换言之,类的成员是属于类的,不属于对象。同样以Article为例,代码如下:
cnblogs.news.Article={ 
title:"这是文章标题", 
content:"这是文章内容", 
show:function(){ 
document.write("<h1>"+cnblogs.news.Article.title+"</h1>"); 
document.write("<p>"+cnblogs.news.Article.content+"</p>"); 
} 
};

调用方式也和C#类似:
cnblogs.news.Article.show();
到这里或许你已经发现了,所谓JavaScript静态类其实就是一个json对象,恭喜,答对了! ^_^
三,如何选择:
那么何时选择实例类,何时选择静态类呢,就个人经验而言(说得不对敬请斧正刀正,怎么正都可以^_^),开发一些对dom的依赖比较弱,而要求复用型很强的程序,如工具类,插件类,结构,使用静态类;反之如果程序对dom依赖很强,经常有变量传来传去,或者对类的结构造成变化,这时选用实例类。个人比较推崇第一种方案,其代码风格较之第二种更像C#,我想写惯了C#的同学也会这样觉得的,^_^。
作者: 祥叔
Javascript 相关文章推荐
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
JS实现的页面自定义滚动条效果
Oct 26 Javascript
超链接怎么正确调用javascript函数
May 23 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 Javascript
浅析JavaScript中的array数组类型系统
Jul 18 Javascript
微信小程序开发animation心跳动画效果
Aug 16 Javascript
React优化子组件render的使用
May 12 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 Javascript
前端 javascript 实现文件下载的示例
Nov 24 Javascript
Vue组件简易模拟实现购物车
Dec 21 Vue.js
JavaScript 面向对象之命名空间
May 04 #Javascript
10个实用的脚本代码工具
May 04 #Javascript
利用location.hash实现跨域iframe自适应
May 04 #Javascript
Array.prototype 的泛型应用分析
Apr 30 #Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
Apr 30 #Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 #Javascript
匹配任意字符的正则表达式写法
Apr 29 #Javascript
You might like
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
php绘制一个矩形的方法
2015/01/24 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
基本DOM节点操作
2017/01/17 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python实现狄克斯特拉算法
2019/01/17 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
公司财务总监岗位职责
2013/12/14 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
报名委托书
2015/01/29 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
毕业设计工作总结
2015/08/14 职场文书