如何在对象上使用Array.prototype.forEach?

Dat*_*sik 1 javascript prototype

我只是想为学习目的创建一个小框架,并且希望能够Array.prototype.forEach在对象上使用,这就是我现在所拥有的,

var data = { test: 'test' };

Array.prototype.forEach(data, function(key value) {
    console.log(key);
});
Run Code Online (Sandbox Code Playgroud)

但是我得到一个错误,我确定你们可以看到原因,但是我不能:)所以任何帮助都将非常感谢

Ben*_*ick 5

对象不是数组,并且无法访问数组原型。您可以仅遍历属性。

for(var key in data){
      console.log(key) //or data[key] if you want the values
   }
Run Code Online (Sandbox Code Playgroud)

关于下面的jQuery注释,似乎他们在内部为每个函数使用循环。从来源

// args is for internal usage only
each: function( obj, callback, args ) {
    var value,
        i = 0,
        length = obj.length,
        isArray = isArraylike( obj );

    if ( args ) {
        if ( isArray ) {
            for ( ; i < length; i++ ) {
                value = callback.apply( obj[ i ], args );

                if ( value === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                value = callback.apply( obj[ i ], args );

                if ( value === false ) {
                    break;
                }
            }
        }

    // A special, fast, case for the most common use of each
    } else {
        if ( isArray ) {
            for ( ; i < length; i++ ) {
                value = callback.call( obj[ i ], i, obj[ i ] );

                if ( value === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                value = callback.call( obj[ i ], i, obj[ i ] );

                if ( value === false ) {
                    break;
                }
            }
        }
    }

    return obj;
},
Run Code Online (Sandbox Code Playgroud)