rss· 导航· 设为首页· 加入收藏
当前位置: 火魔网 » 程序开发 » Javascript

灵活的javascript-风格各异的几种编写方式

Javascript最强的一点就是它的灵活性。你可以用它编写很多简单的函数,也可以用它编写稍微复杂的对象。正是因为函数的方式,许多人认为它像一个玩具,但我觉得这是件好事,因为它可以让人用简单易学的语言完成十分有用的任务。

当然,我更倾向于面向对象的方式,而且JavaScript提供了所有面向对象的特征,就像其他服务器端语言一样。

一起来看一下这几种风格各异的编写方式

/* Start and Stop animations using functions */

function StartAnimation()

{ …… }

function StopAnimation()

{ …… }

这种方式非常简单,但是不能创建包含属性、及操作内部属性的方法的animation对象。接着看下面面向对象的方式,

/*  Anim class  */

var Anim=function ()

{ …… };

Anim.prototype.start=function ()

{ …… };

Anim.prototype.stop=function()

{ …… };

/* Usage */

var myAnim=new Anim();

myAnim.start();

……

myAnim.stop();

这里定义了一个Anim的类,并给这个类的prototype属性添加了两个方法。接下来我们看这个类的封装方式。

/* Amin class, with a slightly different syntax for declaring methods. */

var Anim=function ()

{ …… };

Anim.prototype=function ()

   start:function () { …… },

   stop:function()  { …… }

};

这种方式是在类声明中嵌套方法声明,对于看习惯了典型面向对象的程序员,可能更熟悉这种方式。如果你熟悉这种方式,那么请接着看下面的一种方式,

/*  Add a method to the Funciton object that can be used to declare methods */

Function.prototype.method=function (name, fn)

   this.prototype[name]=fn;

};

/* Anim class, with methods created using a convenience method. */

var Amin=function ()

{  …… };

Amin.method('start', function() { …… });

Amin.method('stop',function() { …… });

Function.prototype.method允许给类添加新方法,它有两个参数,一个方法名,一个方法体。我们也可以进一步修改Function.prototype.method,增加一个链,用链的方式添加类的方法,具体如下,

/* This version allows the calls to be chained */

Function.prototyp.method=function (name, fn)

  this.prototype[name]=fn;

  return this;

};

var Anim=function () { …… };

Anim.method('start', function () { …… }).method('stop', function(){ …… });

以上几种方式在代码大小、效率、性能方面每种都有自己的特点。如何使用,要看你的知识背景,可能你会找出更合适的方式,但不管怎样,JavaScript可以让你为手边的项目选择最适合的方式去做。

顶一下
(0)
踩一下
(0)