2015-11-12 37 views
5

今天我的问题是问我将如何访问函数内的函数。所以,例如,我有一个按钮,如果我点击它,它会提醒。事情是,如果你有一个围绕这个函数的函数,带警报的内部函数将不会提醒。如何访问函数内部的函数?

下面是一个例子:

HTML:

<button onclick="doStuff()">Alert</button> 

JS:

function nothing() { 

var doStuff = function() { 
    alert("This worked!") 
} 

} 

所以doStuff()功能是行不通的。有人能帮我找到一种方法来访问它吗?谢谢。

+0

为什么函数需要在另一个函数内? – EkcenierK

+1

你根本不能。 'doStuff'只在'nothing()'内部可见。 –

+0

'nothing'(包括'doStuff')中的代码只有在你调用'nothing'时才会运行。所以你必须这样称呼它。然后你可以通过返回或者将其赋值给另一个范围中定义的变量等方式来使'doStuff'可用。但是我认为你希望'doStuff'是'Nothing'的一种方法,而不是它的一部分内部代码。 – Oriol

回答

1

@Joseph the Dreamer最终是正确的,但是如果你在调用一个嵌套在另一个函数中的函数时死了,你可以使用OOP方法。

创建一个JavaScript “类” 对象和范围的功能, “这个”:

function Nothing() { 
    this.doStuff = function() { 
     alert("works"); 
    } 
} 
  • 接下来需要添加一个ID,您的按钮,
  • 与click事件侦听器沿

然后,在您的点击事件中,您可以像这样在Nothing“Class”函数中调用doStuff:

var object = new Nothing(); 
object.doStuff(); 

https://jsfiddle.net/me7fek5f/

+0

哦,我明白了你的使用对象编程。这是我能做的事情。多谢兄弟。 –

+0

不是问题,让我知道如果你卡在所有 –

+0

是的,所以我想用按钮切换游戏 –

1

你不能。那是因为它被包含在你无法真正访问的范围内。您可以访问它的唯一方法是将其展示在nothing之外的某个位置。

0

这是一个功课题吗?

你可能会要求做这样的事情:

function nothing() { 
    var doStuff = function() { 
    alert("This worked!") 
    } 
    var yourButton = getYourButton(); 
    attachClickListener(yourButton, doStuff); 

getYourButton和attachClickListener的实现都留给读者。

+0

不,我编码的游戏,虽然我试图访问函数内的函数 –