2014-07-04 127 views
1

某处构造函数的定义如下拦截构造函数中调用JavaScript

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. 我不知道如何创建具有由变量给出一个名称的函数。
  2. 我不知道如何创建实例。

回答

0

为1:

取决于你在哪里存储该功能,你不必在你的拦截实现将它命名。

你可以做return function() { ...或者你可以做类似于someObject[someName] = function()...的东西,然后返回someObject[someName]

为2:

如果我理解正确的话,你应该能够只是做var result = new someConstructor();,但我不是你的目标100%清楚。