在某个地方定义了一个构造函数
var Something = function() {
// do stuff
}
如果我可以插入该行
mydebug.Something = this;
一开始,我可以存储最近创建的 Something
实例,这将有助于我进行调试。我不能,但我传递了 Something
(函数及其名称),并且可以用其他东西替换它。我只是不知道如何让“其他东西”表现得像原来的一样。
function intercept(someConstructor, someName) {
return function <<someName>> () { // 1
var result = <<create a new instance>>; // 2
mydebug[someName] = result;
return result;
}
}
这将被称为
intercept(Something, "Something")
至少存在两个问题:
- 我不知道如何创建一个由变量指定名称的函数。
- 我不知道如何创建实例。
最佳答案
对于 1:
根据您存储该函数的位置,您不必在拦截实现中命名它。
您可以只执行 return function () { ...
或者执行类似于 someObject[someName] = function()...
的操作,然后返回someObject[someName]
.
对于 2:
如果我理解正确,您应该能够执行 var result = new someConstructor();
,但我并不是 100% 清楚您的目标。
关于javascript - 拦截 Javascript 中的构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24566011/