ホームページ  >  記事  >  ウェブフロントエンド  >  jquery each() ソースコード_jquery

jquery each() ソースコード_jquery

WBOY
WBOYオリジナル
2016-05-16 18:10:50977ブラウズ
复制代码代码如下:

// args は内部使用のみです
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === 未定義 || jQuery.isFunction(オブジェクト);
if ( args ) {
if ( isObj ) {
for ( object 内の name ) {
if ( callback.apply( object[ name ], args ) === false ) {
休憩。
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i ], args ) === false ) {
休憩;
}
}
}
// 各
} の最も一般的な使用のための特別で高速なケース else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[ i] ) {}
}
}
オブジェクトを返します。
},

分析:jquery 文 each(callback) 関数は、それぞれの一致する要素を上下文として実行する関数です。つまり、それぞれを使用して同じメソッドを実行します。
このメソッドの最終的な問題は、call と apply の使用法:call(apply) は、関数のオブジェクトの最初の上下文変更が thisObj を指すオブジェクトであることです。
は thisObj で置き換えられます。オブジェクトでメソッドを実行する: call と apply の最初のパラメータはこの対象のオブジェクトであり、その後のパラメータはすべて関数によって転送されます。
call 転送関数のパラメータは番号間隔で適用されます。
//1.callback.apply( object[ name ], args )
//2.callback.call( object[ name ], name, object[ name ] )
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。