如何扩展nodejs url模块中的URL类以向其中添加属性?

vib*_*97a 6 javascript node.js

我正在尝试扩展 URL 类并添加一个属性来自定义它。但它不起作用。

let { URL } = require('url');

class MyURL extends URL {
    constructor(url, base) {
        super(url, base);
        this.base = base;
    }
}
let ur = new MyURL('abc.html','http://www.example.com/about')
console.log(ur);
Run Code Online (Sandbox Code Playgroud)

它记录

MyURL { href: ' http://www.example.com/abc.html ', origin: ' http://www.example.com ', 协议: 'http:', 用户名: '', 密码: '' ,主机:'www.example.com',主机名:'www.example.com',端口:'',路径名:'/abc.html',搜索:'',searchParams:URLSearchParams {},哈希:'' }

请注意,它没有基本属性。为什么会发生这种情况?

如何通过扩展使其具有构造函数中提供的基础属性基础URL

小智 7

尝试console.log(ur.base)一下,您将看到您的base类实例属性。之前看不到的原因是它console.log自动使用了toString()URL 类的方法。因此,您还必须toString在子类中重写并包含base属性。