关于each的一些思考
?
思考是从jQuery的一段代码开始的。
?
?
?
ps:以前明哥问我想要研究js的那些部分,我当时很自然地说了fx.................
?
回到正题,我选的代码是1.4.1,其实在JQuery的源码中你会发现很多这样的模式
?
?
?
?
再看看处理object为{}的例子
?
?
?
?
其实这个问题在我研究tangram和自己编写自己的凤凰lib的时候就开始think....
?
?
/**each-traverse a object and follow the iterator to return a obj**@function**@param {Object} source**@param {Function} iterator ---function(item,key)**@return {Object}**/ZYC.object.each = function(source,iterator){ var returnValue,key,item;if(typeof iterator == 'function'){ for(key in source){ //加了一层hasOwnPropertyif(source.hasOwnProperty(key)){ item = source[key]; //call的时候this指向的是source //然后后面的参数依次是value和key returnValue = iterator.call(source,item,key);}//如果有返回值是false的话就breakif(returnValue === false){ break;} }}return source;};??
?
最后还是讲一下自己的收获:思考的是一些api实现和动态扩展创建命名空间下的fn的方式,从而结合去编写改善自己的api实现方式
?
我在扩展我的fn的时候也参照了这样$.each的模式,动态的去扩展一下phoenix.fn[key]