[英]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.