whole_func_string: function hasPropsAndVals(obj, kv) {
      if (typeof (obj) !== 'object' || typeof (kv) !== 'object') {
          return (false);
      }
  
      if (Object.keys(kv).length === 0) {
          return (true);
      }
  
      return (Object.keys(kv).every(function (k) {
          return (obj[k] && obj[k] === kv[k]);
      }));
  }
func_code_string: function hasPropsAndVals(obj, kv) {
      if (typeof (obj) !== 'object' || typeof (kv) !== 'object') {
          return (false);
      }
  
      if (Object.keys(kv).length === 0) {
          return (true);
      }
  
      return (Object.keys(kv).every(function (k) {
          return (obj[k] && obj[k] === kv[k]);
      }));
  }
func_documentation_string: Returns true when "obj" (Object) has all the properties "kv" (Object) has, and with exactly the same values, otherwise, false