W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
迭代器模式中,迭代器(允許我們遍歷集合中所有元素的對(duì)象)順序迭代一個(gè)集合對(duì)象中的元素而無(wú)需暴漏其底層形式。
迭代器封裝了這種特別的迭代操作的內(nèi)部結(jié)構(gòu),就jQuery的jQuery.fn.each()迭代器來(lái)說(shuō),我們實(shí)際上可以使用jQuery.each()底層的代碼來(lái)迭代一個(gè)集合,而無(wú)需知道或者理解后臺(tái)提供這種功能的代碼是如何實(shí)現(xiàn)的。
這種模式可以被理解為門(mén)面模式的一種特例,在這里我們只處理與迭代有關(guān)的問(wèn)題。
$.each( ["john","dave","rick","julian"] , function( index, value ) {
console.log( index + ": "" + value);
});
$( "li" ).each( function ( index ) {
console.log( index + ": " + $( this ).text());
});
這里我們可以看到j(luò)Query.fn.each()的代碼:
// Execute a callback for every element in the matched set.
each: function( callback, args ) {
return jQuery.each( this, callback, args );
}
在jQuery.each()方法后面的代碼提供了兩種迭代對(duì)象的方法:
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}
return object;
};
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: