前面的测试代码看懂了,这部分测试代码看不懂
result = {
Zero: function() {},
One: function( a ) { a = a; },
Two: function( a, b ) { a = a; b = b; }
};
callback = function( v, k ) {
assert.equal( k, "foo", label + "-argument function treated like object" );
};
for ( i in result ) {
label = i;
result[ i ].foo = "bar";
jQuery.map( result[ i ], callback );
}
result = {
"undefined": undefined,
"null": null,
"false": false,
"true": true,
"empty string": "",
"nonempty string": "string",
"string \"0\"": "0",
"negative": -1,
"excess": 1
};
callback = function( v, k ) {
assert.equal( k, "length", "Object with " + label + " length treated like object" );
};
for ( i in result ) {
label = i;
jQuery.map( { length: result[ i ] }, callback );
}
result = {
"sparse Array": Array( 4 ),
"length: 1 plain object": { length: 1, "0": true },
"length: 2 plain object": { length: 2, "0": true, "1": true },
NodeList: document.getElementsByTagName( "html" )
};
callback = function( v, k ) {
if ( result[ label ] ) {
delete result[ label ];
assert.equal( k, "0", label + " treated like array" );
}
};
for ( i in result ) {
label = i;
jQuery.map( result[ i ], callback );
}
result = false;
jQuery.map( { length: 0 }, function() {
result = true;
} );
assert.ok( !result, "length: 0 plain object treated like array" );
result = false;
jQuery.map( document.getElementsByTagName( "asdf" ), function() {
result = true;
} );
assert.ok( !result, "empty NodeList treated like array" );
result = jQuery.map( Array( 4 ), function( v, k ) {
return k % 2 ? k : [ k, k, k ];
} );
assert.equal( result.join( "" ), "00012223", "Array results flattened (#2616)" );
result = jQuery.map( [ [ [ 1, 2 ], 3 ], 4 ], function( v, k ) {
return v;
} );
assert.equal( result.length, 3, "Array flatten only one level down" );
assert.ok( Array.isArray( result[ 0 ] ), "Array flatten only one level down" );
// Support: IE 11+, Edge 18+
// Skip the test in browsers without Array#flat.
if ( Array.prototype.flat ) {
result = jQuery.map( Array( 300000 ), function( v, k ) {
return k;
} );
assert.equal( result.length, 300000, "Able to map 300000 records without any problems (#4320)" );
} else {
assert.ok( "skip", "Array#flat doesn't supported on all browsers" );
}
} );