javascript面向对象编程规范

原创 2006年06月13日 17:26:00

javascript在语言上的灵活性导致了javascript脚本一直以来很难被复用,但笔者认为这并不完全是javascript自身的问题,web开发人员在开发中没有遵循一定的规范也是很重要的原因,当然为javascript制定一个公认的完整的规范几乎是不可能的,不过在面向对象这个特定的领域,制定一个相对可用的规范是可以的。

对于笔者制定的以下规范,有几点需要说明:首先,为了避免对象间可能出现的交叉影响,不引入继承的概念;其次,为了降低规范的复杂性,不使用包导入的方法引用类库,而保留html标记引用的方法。

//根命名空间和子命名空间
var figcn={};//重复定义命名空间会清空该命名空间内的所有代码,所以根命名空间的命名最好跟公司或项目代号相关,最好不要使用com、cn等命名,这跟java的包命名方式是有区别的。
figcn.io={};
//类
figcn.util=function(){};
//带构造函数的类
figcn.util=function()
{
if(arguments.length==0)
    this.name="default";
else
    this.name=arguments[0];
};
//类的静态字段
figcn.util.name="figcn.util";
//类的静态函数
figcn.util.showmsg=function(){alert(arguments[0]);};
//类的成员字段
figcn.util.prototype.classname="util";//可以在类的成员函数中以this.classname引用
figcn.util.prototype.namespace="figcn";
//类的成员函数
figcn.util.prototype.getFullName=function()
{
return this.namespace+"."+this.classname;
};
figcn.util.prototype.showFullName=function()
{
alert(this.getFullName());
};

 

//实例化类
var ut=new figcn.util();
//调用类的成员函数
ut.showFullName();
//引用类的成员字段
alert(ut.classname);
alert(ut.name);
//调用类的静态函数
figcn.util.showmsg("ut.showmsg");
//引用类的静态字段
alert(figcn.util.name);

附录:javascript代码调试器
jsDebugger.hta
<html>
<title>JavaScript Debug Tool</title>
<script src="figcn.js"></script>
<script src="figcn.io.js"></script>
<body>
<div>
<input type=button value=Run onclick="run()">
<input type=button value=Refresh onclick="location.reload()">
<input type=button value=Save onclick="save()">
<input type=file onchange="loadfile(this.value)" name=f>
<span id=spanx></span>
</div>
<div>
<textarea cols=100 rows=40 id=txt></textarea>
</div>
<script>
function run()
{
 eval(document.all.txt.value);
}
function save()
{
 document.all.spanx.innerText="Saving...";
 if(document.all.f.value=="")
  figcn.io.File.save(document.all.txt.value,figcn.DateTime.toString()+".txt");
 else
  figcn.io.File.save(document.all.txt.value,document.all.f.value);
 document.all.spanx.innerText="Saved.";
}

function loadfile(path)
{
 document.all.txt.value=figcn.io.File.load(path);
}

</script>
</body>
</html>

引用文件一:
figcn.js
var figcn={};
//----DateTime类----------------
figcn.DateTime=function(){};
figcn.DateTime.toString=function()
{
    var d=new Date();
    var year=d.getYear();
    var month=d.getMonth()+1;if(month<10) month = "0" +month;
    var day =d.getDate();if(day<10)day="0"+day;
    var hour=d.getHours();if(hour<10) hour="0"+hour;
    var minute=d.getMinutes();if(minute<10) minute ="0" +minute;
    var second=d.getSeconds();if(second<10) second ="0" +second;
    var x=year+month+day+hour+minute+second;
    return x;
}

引用文件二:
figcn.io.js
figcn.io={};
//----File类----------------
figcn.io.File=function(){};
figcn.io.File.load=function(path)
{
 var fso, oTextStream,s;
   var ForReading = 1;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   oTextStream = fso.OpenTextFile(path, ForReading);
 s=oTextStream.ReadAll();
   oTextStream.Close();
   oTextStream=null;
   fso=null;
   return s;
};
figcn.io.File.save=function(txt,path)
{
 var fso, tf;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   tf = fso.CreateTextFile(path, true);
   tf.Write(txt) ;
   tf.Close();
};

JavaScript 精粹 基础 进阶(8)OOP面向对象编程(上)

面向对象编程,oop并不是针对与javascript,很多语言都实现了oop这样一个编程发法论,比如说java,c++,都是实现了oop的语言。概念与继承 概念 面向对象程序设计(Object-o...
  • u013861109
  • u013861109
  • 2016年12月20日 15:26
  • 515

javascript语言是面向对象还是面向过程?

言下之意,难不成javascript是面向过程?虽然javascript一直容易被人长期误解,但是人家确确实实的是一个面向对象的编程语言,纯爷们一枚。很多人可能觉得只有像java, c++这样的编程语...
  • jean_1221
  • jean_1221
  • 2016年06月16日 18:51
  • 6847

面向对象语言:包、类、字段、方法命名规则

在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的。比如,大小写的区分,使用不同字母开头等等。但究其本,追其源,在为一个资源其名称的时候,应该本着描述性以及唯一性这两大特征来命名,才...
  • john987123
  • john987123
  • 2015年01月12日 17:09
  • 744

用面向对象的编程思想去写js

有时候,还会看到一些搞前端的朋友或者苦逼被迫兼职写前端的后端朋友,去写js的时候,还是一个方法一个方法的去罗列。 就像下面这样: function click1(){ alert("1")...
  • u010480479
  • u010480479
  • 2016年08月05日 14:46
  • 2185

Javascript 进阶 面向对象编程 继承的一个例子

Javascript的难点就是面向对象编程,上一篇介绍了Javascript的两种继承方式:Javascript 进阶 继承,这篇使用一个例子来展示js如何面向对象编程,以及如何基于类实现继承。 1、...
  • lmj623565791
  • lmj623565791
  • 2014年06月07日 17:56
  • 20661

javascript中面向对象的三大作用

面向对象的三大作用 作用1:封装框架 我们可以定义一个对象,去封装一些不同的功能,这样,别人无需了解内部功能如何使实现的,只需要知道如何调用就可以了,这就是所谓的拿来主义。比如一个对象有不同的功能模块...
  • Tyro_java
  • Tyro_java
  • 2016年04月15日 21:19
  • 3102

人人都能看懂的JS学习笔记——JS面向对象程序设计(一)

【理解面向对象编程】 首先,当你学习过面向对象编程时,别人一定会告诉你:“一切皆对象”。 “一切皆对象到底是什么意思?” 野生编程君的理解:对象的意思是具体的每个人,程序中一些的代码片段可以变成...
  • sinat_23064359
  • sinat_23064359
  • 2016年11月17日 10:49
  • 808

Javascript-类-模块化[面向对象已经无处不在]

Javascript是基于原型的编程语言,并不是面向对象的语言。 ES6已实现class关键字,这让js看起来更像一门面向对象的语言 主流语言类型: 基于原型的语言 面向过程的...
  • fengxueysf
  • fengxueysf
  • 2015年12月09日 00:08
  • 831

【前端学习】javascript面向对象编程(继承和复用)

前言      继承,代码复用的一种模式。和其它高级程序语言相比,javascript有点点不一样,它是一门纯面向对象的语言,在JS中,没有类的概念,但也可以通过原型(prototype)来模拟对象的...
  • xtu_xiaoxin
  • xtu_xiaoxin
  • 2015年10月16日 18:32
  • 1687

javascript中的面向对象理解(一)

一、注意:提到“面向对象”这一概念,众所周知,javascript中的面向对象思想与其他的编程语言(例如:PHP、Java等)是有着很大区别的。因此,我们先复习下,传统意义上,面向对象的相关概念,以便...
  • u014516981
  • u014516981
  • 2016年10月19日 23:48
  • 1851
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript面向对象编程规范
举报原因:
原因补充:

(最多只允许输入30个字)