小编Alo*_*ois的帖子

子类化Error时是否应该关心Object.setPrototypeOf的性能问题?

Object.setPrototypeOf(this, new.target.prototype)由于此MDN 警告,我对该函数有疑问:

警告:[[Prototype]]根据现代 JavaScript 引擎优化属性访问的本质,更改对象的 是目前每个浏览器和 JavaScript 引擎中非常缓慢的操作。此外,更改继承的影响是微妙且广泛的,并且不限于在Object.setPrototypeOf(...)语句中花费的时间,而是可能扩展到可以访问已更改的任何对象的任何代码。[[Prototype]]您可以在JavaScript 引擎基础知识:优化原型中阅读更多内容。

由于此功能是语言的一部分,因此高性能(理想情况下)实现该功能仍然是引擎开发人员的负担。在引擎开发人员解决此问题之前,如果您担心性能,则应避免设置[[Prototype]]对象的 。相反,使用所需的[[Prototype]]using创建一个新对象Object.create()

Object.setPrototypeOf(this, new.target.prototype)那么,在不使用(但使用类)的情况下恢复 TypeScript (Node.js) 中的原型字符串的最佳方法是什么?这都是因为 Express 中实现的错误管理中间件,我需要使用它来instanceof确定错误的来源,从而返回正确的响应,但是每当我创建一个从 Error 扩展的类时,都会error instanceof Error返回 true,但error instanceof CustomError返回 false。经过一些研究,我在官方 TypeScript 文档中发现了这一点:

支持new.target

new.target属性是 ES2015 中引入的新语法。当通过 创建构造函数的实例时new, 的值new.target被设置为对最初用于分配实例的构造函数的引用。如果调用函数而不是通过 构造函数newnew.target则设置为undefined

new.targetObject.setPrototypeOf当或__proto__ …

node.js typescript

7
推荐指数
1
解决办法
826
查看次数

是否可以使用 GitHub API 更改私有存储库的可见性?

我一直在寻找一种将我的私有存储库转换为公共存储库的方法,但由于它们有很多,我更喜欢用简单的方法并诉诸 GitHub API,但就我而言,这个find,仅允许编辑公共存储库的可见性。查看最新的文档,我意识到经过身份验证时可访问的唯一端点是(存储库可用端点):

  • GET /user/repos
  • POST /user/repos
  • POST /user/projects

我还尝试使用浏览器控制台并在请求更改可见性时生成日志,但它似乎没有向 GitHub API 发出任何请求。

github github-api

5
推荐指数
2
解决办法
4045
查看次数

标签 统计

github ×1

github-api ×1

node.js ×1

typescript ×1