jquery.map test代码

前面的测试代码看懂了,这部分测试代码看不懂

    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" );
    }
} );
阅读 778
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进