2017-01-01 34 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