Javascript 是否可以更改用new调用的函数的返回类型
我必须为另一个废弃的npm库编写一个垫片 其他人将使用Javascript 是否可以更改用new调用的函数的返回类型,javascript,Javascript,我必须为另一个废弃的npm库编写一个垫片 其他人将使用new关键字调用此库。其他人就是这样做的: const Noble = require('noble/lib/noble'); var nobleInstance = new Noble(macBindings); module.exports = nobleInstance; 现在我编写了一个垫片,它通过require('noble/lib/noble')更改导入的内容。为了让事情变得更好我想改变什么 new Noble(macBindi
new
关键字调用此库。其他人就是这样做的:
const Noble = require('noble/lib/noble');
var nobleInstance = new Noble(macBindings);
module.exports = nobleInstance;
现在我编写了一个垫片,它通过require('noble/lib/noble')更改导入的内容代码>。为了让事情变得更好我想改变什么
new Noble(macBindings);
我一打电话就回来
require('third-pary-library-using-new-noble');
我将实际获得我自己的返回值
为此,我需要更改newnoble(macBindings)代码>正在返回。提醒我已经成功地填充了Noble
函数
我想知道的是,当有人使用new
关键字调用函数时,是否可以更改返回的内容
最后,我想实现的是,当有人打电话时
var nobleInstance = new Noble(macBindings);
我希望nobleInstance
成为macBindings据我所知,在调用new Noble(…)
时,您不能替换返回的实例,但您可以通过迭代对象使您的Noble
具有与macBindings
相同的方法和功能,大致如下所示
function Noble(arg) {
for(var key in arg) {
this[key] = arg[key];
}
}
您可能需要稍微处理上面的代码(更改范围或限制复制的属性),它可能不适合您的情况100%,但这应该是一个不错的起点
广义地说,您要做的是构建自己的Noble
版本,实现与原始版本相同的方法和属性,可能会通知用户Noble
已被弃用,应在某个日期前删除,为了促进从废弃的库中移出的重构。然后只需执行var nobleInstance=macBindings
我无法控制该代码。我正在填充Noble
,但我无法改变调用Noble
的方式或分配nobleInstance
的方式。这个想法真是太棒了!非常感谢。