繁体   English   中英

Javascript名称空间的不同范围

[英]Javascript namespace different scopes

我是新手程序员,并在Javascript中使用名称空间。

编程时有些奇怪。 我的命名空间对象中有两个“ this”,但是有两个不同的结果。 一个是代表Window Object,另一个是名称空间Object本身。

var namespace = {
    A : function A(){},
    B : function B(){
        var b = function b(){
       // "this" => Window Object
            console.log(this);
        };
        b();
      // "this" => namespace Object
        console.log(this);
    }
 }
 namespace.B();

我希望所有这些都可以代表名称空间对象。 我能做些魔术吗?

顺便说一句,我以前学过underscorejs库。 有什么方法可以使用下划线库或仅使用纯JavaScript来解决问题?

非常感谢。

ECBO-执行上下文绑定对象。 上下文(this)是从调用对象(即点之前的名称空间)设置的。 由于您刚使用过b(),因此ECBO设置为window。 您可以执行b.call(namespace),将上下文设置为您选择的对象。

var namespace = {
    A : function A(){},
    B : function B(){
        var b = function b(){
            console.log(this); // "this" => namespace Object
        };
        b.call(namespace);
        console.log(this); // "this" => namespace Object
    }
 }
 namespace.B();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM