2014-07-04 181 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%清楚。