如何从没有原型的对象创建具有默认原型的JS对象?

2023-12-11

背景:该模块请求参数例如能够解析key=value&hello=universe到一个物体{key: 'value', hello: 'universe'}。然而,模块作者认为返回的对象没有原型。换句话说,这个“混蛋”对象是由Object.create(null).

Problem:使用起来会很方便parsed.hasOwnProperty('hello')但如果没有默认的对象原型,这是不可能的。当然,一个人可以Object.prototype.hasOwnProperty.call(parsed, 'hello')但我想我们都同意这样的表达方式是丑陋的。

问题:如何很好地将无原型对象转换为具有默认对象原型和方法,例如hasOwnProperty?另外,这可以在不使用的情况下完成吗令人恐惧的 __proto__ or setPrototypeOf?


使用起来会很方便parsed.hasOwnProperty('hello')但如果没有默认的对象原型,这是不可能的

创建这样一个“混蛋对象”的全部意义在于你不能这样做 - 如果有人发送了一个查询字符串怎么办?hasOwnProperty=oops到你的服务器?

如何很好地将无原型对象转换为具有默认对象原型和方法,例如hasOwnProperty?

Don't.您应该使用长形式call,或者只是去in操作员这正是您所需要的:

'hello' in parsed

在 ES6 环境中,您可能还希望将对象转换为正确的Map并使用它has method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从没有原型的对象创建具有默认原型的JS对象? 的相关文章

随机推荐

  • 在常规 UIViewController 上的 UITableViewCell 中滚动键盘上方的 UITextField

    我已经尝试过 StackOverflow 上的大部分示例 我也用过苹果的 我似乎遇到的问题是他们没有考虑 UITableView 中的 UITextField 我已经这样做过很多次了 但不是以这种方式 我有一个自定义 UITableView
  • std::async 函数串行运行

    当在 for 循环中使用 std async 和 launch async 时 我的代码在同一线程中串行运行 就好像每个异步调用在启动之前都会等待前一个调用一样 在 std async 引用的注释中 std 异步 如果 std future
  • Android应用程序中的云端点身份验证失败

    我第一次尝试在 Google Cloud Endpoints android 应用程序中以调试模式使用身份验证时遇到了问题 我这样设置凭据 credential GoogleAccountCredential usingAudience t
  • PHP < 5.3.0 中的 DateTime::createFromFormat

    我正在寻找与以下相同的功能日期时间 createFromFormat但我需要它在运行早于 v5 3 的 PHP 版本的环境中工作 基本上我需要提供一种格式 就像您使用的Date 函数 然后我需要根据该格式解析 验证字符串 如果字符串格式正确
  • 将 busybox 推入 Android 模拟器

    我已经下载了 mips android 的源代码并完成了 make 并让模拟器运行 我想将 busybox 推入模拟器中 我已经下载了静态编译的 busybox 二进制文件 我应该将其放置在哪个目录下 我应该如何将 busybox 推送到模
  • 高效的笛卡尔积算法

    有人可以为我演示一种比我当前使用的算法更有效的笛卡尔积算法吗 假设有一个 我环顾四周并用谷歌搜索了一下 但看不到任何明显的东西 所以我可能会错过一些东西 foreach int i in is foreach int j in js Pai
  • 如何在build.gradle文件中添加OJDBC6.jar?

    我正在应用程序中连接到 Oracle Db 并尝试使用 gradle build 来构建应用程序 我无法从 gradle 构建访问 OJDBC6 jar 请有人告诉我 我们如何将 ojdbc6 jar 添加到 build gradle 文件
  • Jelly Bean webview 应用程序无法完美响应 touchend 事件

    我的 webview 应用程序与早于 Jelly Bean 的 Android 版本中的 touchend 事件配合得很好 但在 Jelly Bean 中 touchend 事件并不可靠 特别是在可滚动的 div 上 有时不会触发 touc
  • ANDROID:使用 strings.xml 背后的主要思想是什么?

    有人请解释一下使用的主要思想是什么字符串 xml 我认为这对于多语言支持很有用 但我们如何为此组织它呢 如果我不想在 Android 应用程序中使用多语言支持 我是否需要它 这个想法是 它代表各种字符串的单个位置 因此您的代码不会充斥着字符
  • window.blur() 不适用于 Firefox 4

    我有一个功能 激活后会在当前浏览器窗口下打开一个新窗口作为弹出窗口 它在所有过去版本的 IE 和 FF 上都工作得很好 现在它已经停止工作了 显然 Mozilla 更改了 FF 4 的一项设置来防止这种情况发生 http support m
  • React-leaflet 创建自定义组件

    我想使用react leaflet 创建一个自定义组件 显示鼠标的实际位置 x y 但我不知道如何创建它 我发现react leaflet control但好像不是最新的 当然我看了api文档https react leaflet js o
  • Laravel phpunit 总是 404

    环境 PHP 7 0 macOS apache 代码是 public function testBasicExample this gt visit 运行 phpunit 结果是 1 ExampleTest testBasicExample
  • 单击按钮时如何为网站上的所有链接添加下划线?

    经过一个小时的尝试和错误创建一个简单的脚本后 我向您寻求帮助 我想创建一个button 点击后会为所有添加下划线样式a网站上的选择器 我已经写了一个简单的函数 但不幸的是它不起作用 有大量的a整个页面的选择器 所以我不会发出整个页面的代码
  • Visual Studio 项目依赖项

    我有一个 Visual Studio Net 解决方案 其中有许多项目 库 当我在自己的 PC 上本地工作时 没有问题 因为我倾向于重新编译那些我刚刚更改的库 并且所有内容都是同步的 问题是有时其他开发人员偶尔需要处理或查看我的代码 但在重
  • 复制并粘贴到 DataGridView 单元格中 (C#)

    我需要能够从一个应用程序复制一个或多个名称 使用普通复制命令 然后能够双击 DataGridView 中的文本单元格将数据粘贴到网格单元格中 关于如何实现这一目标有什么想法吗 我正在尝试最大程度地减少此功能的键盘使用 这实际上比您想象的要容
  • 将文件添加到文件夹时运行 .bat 文件的 Powershell 脚本

    我想监视 Windows 7 文件夹 并在将任何新文件添加到该文件夹 时运行 bat 文件 看来我应该能够使用安装在计算机上的 powershell 来执行此操作 我读过一些答案 例如this one但我还无法通过修改我所看到的内容来使任何
  • itext从现有pdf中获取字段坐标

    首先 我不是 Java 开发人员 我只需要小程序 它将从现有 pdf 文件中按字段名称输出字段坐标 当我从命令行调用我的类时 我将输入该坐标 如下所示 javac GetField java java GetField
  • UITableViewCellStyleSubtitle 单元格的分隔线不占全宽

    我已经准备好了一个简单的测试项目回答我在 GitHub 上的问题 使用时UITableViewCellStyleSubtitle细胞类型 称为Subtitle在 Xcode Interface Builder 中 由于某种原因 水平线没有到
  • MySQL 查询一堂课的书本费用

    我只需要一个 MySQL 行查询来执行以下操作 假设有两个简单的表 Class and Books Class ID Name Students1 公斤 202 年级 3 253 等级 5 30 Books ID ClassId Title
  • 如何从没有原型的对象创建具有默认原型的JS对象?

    背景 该模块请求参数例如能够解析key value hello universe到一个物体 key value hello universe 然而 模块作者认为返回的对象没有原型 换句话说 这个 混蛋 对象是由Object create n