您的位置:首页 > 其它

[no320.com]自己动手写一个phonegap/cordova里的each

2012-07-19 09:49 92 查看
直接上代码:

define("no320/each", function(require, exports, module) {
/**
* Creates a each function used to callback when page onload
*
* @private
*/

//数组与伪数组的遍历
function _Array_forEach(array, block, context) {
if (array == null) return;
//对String进行特殊处理
if(typeof array == 'string'){
array = array.split('');
}
var i = 0,length = array.length;
for (;i < length && block.call(context, array[i], (i+1), array)!==false; i++) {}
};

//对象的遍历
function _Function_forEach(object, block, context) {
for (var key in object) {
//只遍历本地属性
if (object.hasOwnProperty(key)&&block.call(context, object[key], key, object)===false){
break;
}
}
};

module.exports = function(object, block, context){
if (object == null) return;
if (typeof object.length == "number") {
_Array_forEach(object, block, context);
}else{
_Function_forEach(object, block, context);
}
};

});
测试方法:

<script type="text/javascript" charset="utf-8" src="../lib/scripts/require.js"></script>
<script type="text/javascript" charset="utf-8" src="../src/domready.js"></script>
<script type="text/javascript" charset="utf-8" src="../src/each.js"></script>
<script type="text/javascript">

// 第二种方式:使用别名
window.$ = require('no320/domready');
var forEach = require('no320/each');

$(function(){
//1:1 \n 2:2
forEach([1,2,3,4,5],function(el,index){
if(index>2){
return false;
}
//alert(index+":"+el);
});

function print(el,index){
document.write(index+":"+el+"<br>");
}

forEach({a:'a',b:'b',c:'c'},print);

forEach("PHONEGAP_IS_CORDOVA",print);

function Person(name, age) {
this.name = name || "";
this.age = age || 0;
};

Person.prototype = new Person;
var fred = new Person("shiren1118", 26);
fred.language = "chinese";//极晚绑定
//name:shiren1118 \n age:26 \n language:chinese
forEach(fred,print);

});

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: