[英]Passing reference to “this” anonymous outer function to passed inner function
为了维护名称空间,我有类似以下代码的代码:
MyNamespace = function() {
var foo;
//other private vars
//some private functions
//return certain functions which will be publicly called through MyNamespace
return {
"pubFunc1": function() {/*do stuff*/}
}
}
我希望我的一个公共函数能够将函数作为参数。 传入的函数如下所示:
function(state) {
//do something with the passed in state
}
该函数将被传递到第一个匿名函数中。 从那里开始,如参数所示,第一个匿名函数会将其状态(带有this
)传递给刚刚传入的函数。我遇到的问题是,匿名函数的this
引用了全局window
,而不是全局window
匿名功能。
我真正需要的是能够传入一个函数并为其提供对我的命名空间函数中的私有变量和函数的完全访问权限的能力。 有人知道这样做的好方法吗?
Javascript使用词法作用域,即,仅物理上位于外部函数内部的函数才能访问其作用域( var
)。 无法使外部定义的任何函数都可以访问该函数的var
。
因此,您唯一的选择是使“私有”变量成为“受保护”属性,并将属性包传递给回调:
MyNamespace = function() {
return {
_foo: "something",
_bar: "else",
pubFunc1: function(callback) {
callback(this._foo, this._bar) //or
callback(this)
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.