2017-01-01 55 views
-1

我以前使用過這個功能,但由於某種原因,它不起作用,並給出了下面的錯誤。我不知道爲什麼,這可能是我看不到的明顯錯誤。以外的其他功能調用函數

TypeError: (intermediate value).inside is not a function 

來電被調用,運行其專門針對內部功能單獨運行留下外功能沒有關於內部運行明智的其餘新外功能。

function caller() { 
new outside().inside(); 
} 


(function outside() { 
function inside() {...} 
})(); 

caller(); 

最好outside()是一個自我調用函數,但我不認爲這是可能的。

+0

此代碼不能工作過。另外,「外部」甚至沒有在你的代碼片段中定義。 – melpomene

回答

1

另一個函數內聲明的函數在功能的範圍內創建一個局部變量,它不會創建功能的返回值的屬性。

如果你想要後者,那麼你必須明確地創建它。

另請注意,由於您使用的是關鍵字new,因此預計該構造函數將以首字母大寫來命名。

function caller() { 
 
    new Outside().inside(); 
 
} 
 

 

 
function Outside() { 
 
    function inside() { 
 
    console.log("Inside"); 
 
    } 
 

 
    this.inside = inside; 
 
} 
 

 
caller();

+0

另外,如果'inside'沒有引用任何'Outside'的局部變量,那麼在'Outside.prototype'上定義函數會更有效率。 – 4castle

+0

謝謝。這工作。 – Fearcustard