1.3 Backbone依赖库的使用

在正式开发Backbone应用之前,有必要介绍Backbone的依赖库Underscore.js,因为它是一个Backbone应用正常运行的基础。如果要使用Backbone框架必须先导入依赖库Underscore.js,这是因为Backbone.js不能独立使用,必须通过依赖库Underscore.js中的函数完成访问页面元素、处理元素的基本操作。

无论是Backbone还是Underscore都是DocumentCloud公司的一个开源项目,但相对于主框架文件Backbone.js而言,依赖库Underscore.js是一个最基础的函数库,该库按类别又可以划分为集合、数组、函数、对象、实用工具等,与其他常用的JavaScript库一样,函数库将对象、集合、数组的操作进行了封装,开发人员只需要调用这些已封装好的库函数,就可以像使用jQuery框架一样,轻松控制DOM元素和处理元素事件。

1.3.1 使用_.bindAll()函数绑定对象方法

以“_”开头是依赖库Underscore的一个特征,用于区分其他库函数名,“.”后面就是函数的名称。接下来通过简单的示例来演示Underscore函数的强大功能。

示例1-1 调用_.bindAll()函数显示hello,underscore!

1.功能描述

在新建的HTML页面中添加一个<div>元素,单击该元素会调用_.bindAll()函数绑定的对象方法,在元素中显示“hello,underscore!”字样。

2.实现代码

新建一个HTML文件1-1.html,加入如代码清单1-1所示的代码。

代码清单1-1 使用_.bindAll()函数绑定对象方法

<!DOCTYPE html>
<html>
<head>
    <title>underscore中_.bindAll函数示例</title>
    <script src="Js/jquery-1.8.2.min.js"
            type="text/javascript"></script>
    <script src="Js/underscore-min.js"
            type="text/javascript"></script>
</head>
<body>
    <div id="divTip">点击我</div>
    <script type="text/javascript">
        var divView = {
            ele: '#divTip',
            tip: 'hello,underscore!',
                onClick: function ()
               { $(this.ele).html(this.tip); }
        };
        _.bindAll(divView, 'onClick'); 
        $(divView.ele).bind('click', divView.onClick);
    </script>
</body>
</html>

3.页面效果

执行代码后的页面效果如图1-4所示。

图1-4 使用_.bindAll()函数绑定对象方法

4.源码分析

在上述页面代码中,为了能更加方便地访问DOM元素,首先在<head>元素中导入jQuery库和Backbone依赖库Underscore.js文件。然后,在<script>元素中添加实现功能的JavaScript代码。在代码中,先定义一个divView对象,对象内部包含一个onClick方法,该方法的功能是将指定元素的显示内容设置为“hello,underscore!”。

接下来通过下列代码将对象内部onClick方法与divView对象相绑定。

_.bindAll(divView, 'onClick');

其中,bindAll是依赖库Underscore中的一个函数,功能是将多个方法绑定在指定的对象中。完成绑定后,可以通过对象调用绑定后的方法,使用十分方便。该函数的调用格式如下所示。

_.bindAll(object, *methodNames)

在上述代码中,括号中的“object”为绑定方法的对象,“*methodNames”为方法名称,如果有多个方法名,可以用逗号隔开。

通过bindAll函数完成对象的方法绑定之后,通过jQuery中的bind方法将divView对象的onClick方法绑定到指定元素的click事件中。单击该元素时,将执行onClick方法中的代码,最终将字符内容“hello,underscore!”显示在页面中。

1.3.2 使用_.keys()函数检索对象属性名称

依赖库Underscore中除了包含处理DOM元素的函数集之外,还包含大量对象、集合、数组的处理函数,如下列代码所示。

var tmp = _.keys({ name: "陶国荣",
    sex: "男",
    email: "tao_guo_rong@163.com"
});
console.log(tmp[1]);

在上述代码中,keys()是依赖库Underscore中的一个对象函数,用于检索出对象属性的名称。执行上述代码后,将在控制台输出“sex”,由于索引号是从“0”开始,因此索引号为“1”的对象名为“sex”。

除上述两个简单的函数之外,依赖库Underscore还提供了许多方便调用的内部方法,通过这些方法,开发人员可以很方便地在页面中与服务器进行数据交互,及时响应并处理客户的操作请求,更多关于Underscore库中的内部函数和方法,将在第2章进行详细介绍。