function forOwn(object, fn, scope) {
  for (let prop in object) {
    if (object.hasOwnProperty(prop)) {
      fn.call(scope, object[prop], prop, object)
    }
  }
}
Iterate over an object's own (non-prototype-inherited) properties
@param {object} object - The object to iterate over
@param {function} fn - A function that will be invoked for each iterated property. It
       will be passed three arguments:
       - value (the property value)
       - key (the property name)
       - object (the object being iterated over)
@param {*} [scope] - An optional object to be used as `this` when calling the `fn`