Open jingchaocheng opened 4 years ago
使用 iteratee 遍历自身的可枚举属性。 iteratee 会传入3个参数:(value, key, object)。 如果返回 false,iteratee 会提前退出遍历。
/** * Iterates over own enumerable string keyed properties of an object and * invokes `iteratee` for each property. The iteratee is invoked with three * arguments: (value, key, object). Iteratee functions may exit iteration * early by explicitly returning `false`. * * @since 0.3.0 * @category Object * @param {Object} object The object to iterate over. * @param {Function} iteratee The function invoked per iteration. * @see forEach, forEachRight, forIn, forInRight, forOwnRight * @example * * function Foo() { * this.a = 1 * this.b = 2 * } * * Foo.prototype.c = 3 * * forOwn(new Foo, function(value, key) { * console.log(key) * }) * // => Logs 'a' then 'b' (iteration order is not guaranteed). */ function forOwn(object, iteratee) { // new Object(object) object = Object(object) // 获取 object 的自身属性遍历 // 调用 iteratee 传入当前项、索引和 object Object.keys(object).forEach((key) => iteratee(object[key], key, object)) } export default forOwn