【问题标题】:Call nested namespace function javascript调用嵌套命名空间函数 javascript
【发布时间】:2016-02-17 03:00:58
【问题描述】:
var namespace = {
    test: function() {
         //sample 1
         function nest(param) {
            console.log('a '+ param);
         }
         //sample 2
         this.nest = function(param) {
            console.log('b '+ param);
         }
    }
}

谁能解释如何调用和访问嵌套函数?提前致谢!

【问题讨论】:

    标签: function namespaces


    【解决方案1】:

    您在test 范围内定义nest 函数,它只能在test 内访问。 this.nest 函数是根据 test 函数的上下文定义的,它是 namespace 变量。这使得 nest 的该版本可以在 test 函数之外访问,即使您在函数体中定义它也是如此。

    把你的代码改成这个,你会看到不同的控制台输出;

    var namespace = {
        test: function() {
             //sample 1
             function nest(param) {
                console.log('a '+ param);
             }
    
             nest('sample 1');
    
             //sample 2
             this.nest = function(param) {
                console.log('b '+ param);
             }
    
             this.nest('sample 2');
        }
    }
    namespace.test();
    namespace.nest('sample 3');
    

    这将产生以下输出;

    a sample 1
    b sample 2
    b sample 3
    

    关于范围和上下文的一些建议阅读; Understanding Scope and Context in JavaScript

    【讨论】:

    • 感谢@Dave Anderson 的回答。但是, namespace.nest('sample 3');没用的兄弟
    • @JebooScr 你如何测试这个?我已经将该代码直接放在 Chrome 控制台和 JSFiddle 中,控制台会输出来自位置的所有日志调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2013-03-03
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多