JavaScript 设计模式 —— 富有表现力的JavaScript

发布于:2024-04-19 ⋅ 阅读:(28) ⋅ 点赞:(0)

第一部分

第1章(富有表现力的JavaScript)

揭示了JavaScript语言富有表现力的特点。从中你可以体会到,这种语言允许你用各种各样的编程风格来完成同样的任务,还允许你在面向对象编程的过程中借用函数式编程的概念来丰富其实现方式。

这一章解释了究竟为什么应该使用设计模式,以及它们在JavaScript程序设计中的运用是如何使代码更高效、更易于处理的。

1.1 JavaScript的灵活性 

        JavaScript最强大的特性是其灵活性。作为JavaScript程序员,只要你愿意,可以把程序写得很简单,也可以写得很复尔。

        这种语言也支持多种不同的编程风格。你既可以采用函数式编程风格,也可以采用更复杂一点的面问对象编程风格。

        即使你根本不懂函数式编程或面向对象编程,也能写出较为复杂的程序。使用这种语言,哪怕只采用编写一个个简单的函数的方式,你也能高效地完成任务。

        这可能是某些人把JavaScript视同玩具的原因之一,但我们却认为这是一个优点。

        程序员只要使用这种语音的一个很小的、易于学习的子集就能完成一些有用的任务。这也意味着当你成长为一个更高级的程序员时,JavaScript在你手中的威力也在增长。

        JavaScript允许你模仿其他语言的编程模式和惯用法。它也形成了自己的一些编程模式和惯用法。那些较为传统的服务器端编程语言具有的面向对象特性,JavaScript都有。

         先来看一个用不同方法完成同样的任务的例子:启动和停止一个动画。如果你看不懂这些例子,别担心。我们在此使用的所有模式和技术都会在本书后面进行讲解。

        目前你可以把这一部分看作一个演示在JavaScript中用不同方法完成同一任务的实际例子。如果你习惯于过程式的程序设计,那么可以这样做:

/*Start and stop animations using functions.*/
function startAnimation(){
}
function stopAnimation(){
}

这种做法很简单,但你无法创建可以保存状态并且具有一些仅对其内部状态进行操作的方法的动画对象。下面的代码定义了一个类,你可以用它创建这种对象:
/*Anim class.*/
var Anim=function(){
    ...
}:
Anim.prototype.start=function(){
};
Anim.prototype.stopfunction(){
};

/*Usage.*/
var myAnim=new Anim();
myAnim.start();
myAnim.stop();

        上述代码定义了一个名为Anim的类,并把两个方法赋给该类的prototype属性。第3章将详细讲述这种技术。如果你更喜欢把类的定义封装在一条声明中,则可改用下面的代码:

/*Anim class, with a slightly different syntax for declaring methods. */ 
var Anim=function(){
}
Anim.prototype={
    start: function(){
    },
    stop