gpt4 book ai didi

javascript - 将引用 "this"匿名外部函数传递给内部函数

转载 作者:行者123 更新时间:2023-12-04 17:03:56 24 4
gpt4 key购买 nike

为了维护命名空间,我的代码如下所示:

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*/}
}
}

我希望我的公共(public)函数之一能够将函数作为参数。传入的函数如下所示:
function(state) {
//do something with the passed in state
}

这个函数将被传递到第一个匿名函数中。从那里开始,正如参数所暗示的那样,第一个匿名函数会将其状态(带有 this )传递给刚刚传入的函数。我遇到的问题是 this匿名函数的引用是指全局 window , 而不是匿名函数。

我真正需要的是能够传入一个函数并让它完全访问我的命名空间函数中的私有(private)变量和函数。有谁知道这样做的好方法吗?

最佳答案

Javascript 使用词法作用域,也就是说,只有物理上位于外部函数内部的函数才能访问其作用域( var s)。没有办法制作函数的 var s 可被外部定义的任何函数访问。

因此,您将“私有(private)”变量设为“ protected ”属性并将属性包传递给回调的唯一选择:

 MyNamespace = function() {
return {
_foo: "something",
_bar: "else",
pubFunc1: function(callback) {
callback(this._foo, this._bar) //or
callback(this)
}
}
}

关于javascript - 将引用 "this"匿名外部函数传递给内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com