Dojo笔记02 - Console,数组迭代器

 

Console

 

今天要进行一些输出,先介绍一下我最喜欢的Dojo的Console,如果在IE中调试Dojo的代码就非常方便了,只要的页面中加上

<script type="text/javascript">
            djConfig = {
                isDebug: true,
                parseOnLoad: true
            };
</script>

 

isDebug: true,在页面中就可以看到Dojo的console了,Dojo1.3中的console稍稍和以前有点儿不一样,多了一些功能键,样式风格看起来是在模仿FireBug,好像越来越智能了。

 

有了Console,就方便多了,我们能把要输出的内容用console来输出,可以不用总是alert了。

 

Dojo console中常用的输出有四种级别:

console.log("This is console.log!"); 
console.info('This is console.info!'); 
console.warn('This is console.warn!'); 
console.error('This is console.error!'); 

 

看一下效果 

 

 

 

 

 

 

 

 

dojo的console是怎么实现的呢? 在 dojo.js 里面有这样一段代码:

function() {
	if (typeof this["loadFirebugConsole"] == "function") {
		this["loadFirebugConsole"]();
	} else {
		this.console = this.console || {};
		var cn = ["assert", "count", "debug", "dir", "dirxml", "error",
				"group", "groupEnd", "info", "profile", "profileEnd",
				"time", "timeEnd", "trace", "warn", "log"];
		var i = 0, tn;
		.....	
	}
}

 

从这里看到 dojo 实际上是调用的是 Firebug 的console,这样看来 Firebug console 的属性在dojo里面都可以使用,Firebug console 属性参考:http://getfirebug.com/console.html,好了,这样就准备的差不多了,下面继续。

  

 

数组迭代器

 

JavaScript中要遍历一个数组,通常情况下我们会这样做:

var arr = new Array("test", 123, 555);
for(var i=0; i<arr.length; i++) {
	alert(arr[i]);
}	

 

Dojo为数组对象提供了迭代器,举一个简单的例子:

var arr = new Array("test", 123, 555);
dojo.forEach(arr, function(elt, idx, array){
		alert(idx + " - " + elt + " - " + array);
	});

 

效果

  • 0 - test - test,123,555
  • 1 - 123 - test,123,555
  • 2 - 555 - test,123,555

这样不用写for循环了,很简单吧。

 

来看一下 dojo API 中对 forEach() 方法的定义:

var foo=dojo.forEach(arr: Array|String, callback: Function|String, thisObject: Object?);

 

解释一下 forEach(arr,callback,thisObject) 方法的参数:

  1. arr,可以是一个数组,也可以是一个String,如果是一个String,会把String看作是一个数组,按每个字符拆开(支持中文)。
  2. callback,回调方法涉及三个参数item, index, array,item就是数组中每一个元素,index是元素在数组中的位置,array是要遍历的数组。
  3. thisObject,是一个可选参数,可以用来约束回调方法的范围。

API中给出了三个实例代码:

 

第一个例子

// log out all members of the array:
dojo.forEach(
    [ "thinger", "blah", "howdy", 10 ],
    function(item){
        console.log(item);
    }
);

 

第一个例子很简单,就是遍历了给定的数组,然后将数组中的元素挨个输出。

 

第二个例子

// log out the members and their indexes
dojo.forEach(
    [ "thinger", "blah", "howdy", 10 ],
    function(item, idx, arr){
        console.log(item, "at index:", idx);
    }
);

 

第二个例子输出了每个元素在数组中的位置。

 

第三个例子

// use a scoped object member as the callback 
var obj = {
    prefix: "logged via obj.callback:",
    callback: function(item){
        console.log(this.prefix, item);
    }
}; 
 
// specifying the scope function executes the callback in that scope
dojo.forEach(
    [ "thinger", "blah", "howdy", 10 ],
    obj.callback,
    obj
);

 

通过这个例子我们可以理解forEach()第三个参数的含义了,遍历给定数组,传入 obj 对象,调用obj对象的callback方法来来处理遍历后的函数。

 

 

  

 

 

 

你可能感兴趣的:(JavaScript,Firebug,IE,dojo)