javascript - JavaScript/NodeJS:检查 instanceof 的父方法
问题描述
在 Solid 的 NodeJS 实现中,我可以看到以下内容:
module.exports = HTTPError
function HTTPError (status, message) {
if (!(this instanceof HTTPError)) {
return new HTTPError(status, message)
}
这背后的意义何在?在哪种情况下,所说的方法实例不会通过instanceof
检查?我认为这不是多余的,正如我现在所想的那样,但找不到背后的逻辑。
解决方案
差异取决于new
关键字的存在。考虑以下示例:
function HTTPError(status, message) {
if (!(this instanceof HTTPError)) {
console.log("called without new. Status is " + status);
return new HTTPError(status, message)
} else {
console.log("called with new. Status is " + status);
}
this.status = status;
}
const i = HTTPError(500);
const i2 = new HTTPError(400);
console.log(i);
console.log(i2);
推荐阅读
- html - 为什么 50 秒视频的 HTML5 视频时间戳以小时:分钟:秒为单位?
- html - 跨移动设备和桌面的字体大小
- java - 在杰克逊中将空值序列化为零的简单方法
- html - 使用社交媒体按钮的 Html Div
- android - okhttp3 请求在 Kotlin 中给出 android.os.NetworkOnMainThreadException
- python - 如何访问json中的嵌套值
- php - 如何在wordpress中安装php脚本
- jupyter-notebook - 无法在 VS Code 中打开 Jupyter Notebook
- reactjs - 错误:找不到模块“react-dev-utils/getPublicUrlOrPath”
- java - 如何批量获取目录中的文件列表?