【问题标题】:Function declaration inside function which is inside object对象内部的函数内部的函数声明
【发布时间】:2017-12-20 19:54:29
【问题描述】:

这很有趣,只是理论上,而不是在现实世界中。

1 - 如何从外部调用inside() 函数?

2 - 创建这样的结构是常见的做法吗?

3 - inside() 函数中this 的值是多少(如果可以从外部调用)?

 var obj = {
        method: function(){
            console.log('method function called!');
            function inside(){
                console.log('inside function called!')
                }
           }  
    }

【问题讨论】:

  • 1) 否 2) 是 3) As always,取决于它的调用方式
  • 能否请您详细解释一下,如果无法调用 inside() 函数(1),为什么是常见做法(2)?这取决于什么?
  • 如果无法从外部调用它,那并不意味着无法从内部调用method - 这通常非常有用。关于this,请查看链接文档
  • 我已经看过你在写这个问题之前提到的文档,我不清楚。但是您写的最后一个答案和 Rayons 的答案确实帮助我理解了它。非常感谢。

标签: javascript function methods javascript-objects


【解决方案1】:
  1. 如何从外部调用 inside() 函数? -> 不,JavaScript 有 块级范围,因此函数内部定义的任何内容都不会 可以在函数外访问。它可以称为私人 功能。
  2. 创建这样的结构是常见的做法吗? -> 是的。如果你 希望您的功能对执行的其他部分隐藏 循环。
  3. inside() 函数中 this 的值是多少(如果是 可以从外面打电话)? -> this 的值取决于如何 该函数被调用。在您的情况下,这将是 window 如果 function 在没有任何上下文的情况下被调用,因此 global(window) context

var obj = {
  method: function() {
    console.log('method function called!');

    function inside() {
      console.log(this);
      console.log('inside function called!');
    }
    inside();
  }
}

obj.method();

【讨论】:

    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2022-09-29
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多