whole_func_string: function isDataDescriptor(desc) {
    return !!desc && desc.hasOwnProperty('value') && isBoolean(desc.configurable) && isBoolean(desc.enumerable) && isBoolean(desc.writable);
  }
func_code_string: function isDataDescriptor(desc) {
    return !!desc && desc.hasOwnProperty('value') && isBoolean(desc.configurable) && isBoolean(desc.enumerable) && isBoolean(desc.writable);
  }
func_documentation_string: to check if the descirptor is an data descriptor
  @param {descriptor} desc it should be a descriptor better