dojo的dojo.mixin

来源:互联网 发布:windows关闭端口命令 编辑:程序博客网 时间:2024/04/28 19:52

// some sample data
var data = {
identifier: 'id',
label: 'id',
items: []
};

var data_list = [
{"Heard": true, "Checked": "True", "Genre":"Easy Listening","Artist":"Bette Midler", "Year":2003,"Album":"Bette Midler Sings the Rosemary Clooney Songbook","Name":"Hey There", "Length":"03:31","Track":4, "Composer":"Ross, Jerry 1926-1956 -w Adler, Richard 1921-","Download Date":"1923/4/9", "Last Played":"04:32:49"},
{"Heard": true, "Checked": "True", "Genre":"Classic Rock","Artist":"Jimi Hendrix", "Year":1993,"Album":"Are You Experienced", "Name":"Love Or Confusion","Length":"03:15", "Track":4,"Composer":"Jimi Hendrix", "Download Date":"1947/12/6","Last Played":"03:47:49"}]

dojo中定义一个data,用作Store的数据源,(可以将整体都放在后台请求的数据中,格式化之后一块返回前台,就不必用js去处理),其中的items部分数据来自后台请求返回的数组data_list 进行格式化,

var len = data_list.length;
var rounds = 1;
for(var i=0; i < rounds * len ; ++i){
data.items.push(dojo.mixin({'id': i+1 }, data_list[i%len]));
}

其中mixin用来填充数据。

dojo源码里,大量使用 dojo.mixin、dojo.extend、dojo.declare 三个方法。作用均为扩展dojo基类。

一、dojo.mixin

dojo.mixin用于扩展一个实例对象,如

var obj = {a:1,b:2}

dojo.mixin(obj,{c:3,d:4})

那么现在的obj为{a:1,b:2,c:3,d:4}

二、dojo.extend

dojo.extend用于扩展一个类对象,在实际应用中我主要用来扩展dojo控件。如给dijit.Dialog扩展一个setTitle方法

dojo.extend(dijit.Dialog,{

     setTitle:function(name){

            this.set('title',name)

    }

})

这样在创建Dialog对象后,就包含的 setTitle 的方法。

三、dojo.declare

dojo.declare在控件里被大量应用,原因是dojo.declare可以声明一个类,而不污染继承的类。可以用面向对象语言里的多重继承理解。比如 我要声明一个对话框类,这个对话框有特殊的样式。

dojo.declare(

    "myDialog",

    dijit.Dialog,

    {

        style:...,

        setTitle:function(...){...}

    }

)

   可以比较方便的继承控件,编写自己的控件

0 0