Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript `此函数返回父对象的值,而不是当前函数_Javascript_This - Fatal编程技术网

Javascript `此函数返回父对象的值,而不是当前函数

Javascript `此函数返回父对象的值,而不是当前函数,javascript,this,Javascript,This,我不确定我是否正在以最好的方式接近这一点,但我真的想了解为什么会发生这种情况 var sessionMethods={ isOnline:函数s{/**/}, isOffline:函数s{/**/}, }; 函数defaultCallback{ 如果参数类型为[0]!==“对象”{ 参数[0]={}; }如果参数[0]中有“会话”,则为else{ 参数[0]=参数[0]。会话; } //这里有会话对象的值!! //我想访问会话[currentFunction]。回调 返回this.callbac

我不确定我是否正在以最好的方式接近这一点,但我真的想了解为什么会发生这种情况

var sessionMethods={ isOnline:函数s{/**/}, isOffline:函数s{/**/}, }; 函数defaultCallback{ 如果参数类型为[0]!==“对象”{ 参数[0]={}; }如果参数[0]中有“会话”,则为else{ 参数[0]=参数[0]。会话; } //这里有会话对象的值!! //我想访问会话[currentFunction]。回调 返回this.callback.applythis,参数; } var会话={}; 对于sessionMethods中的var键{ session[key]=defaultCallback; 会话[key].callback=sessionMethods[key]; } 我的最终目标是能够通过添加某种中间件功能来避免冗余代码,这种功能可以在必要时将请求转换为请求会话,并可能在以后做更多的工作


但如果我能再多了解一点这是如何工作的,那就太好了

如果将“this”赋值给变量,则将存储上下文

  // Here this has for value session object !!
  // i want to access session[currentFunction].callback
  var self = this;  // <-- assign this to a variable.
  return this.callback.apply(self , arguments);

好了,我现在明白了这是如何工作的了,感谢limelights,bind做了什么


这是我对它的理解:它从不表示当前函数对象,但它是调用函数的对象,我们可以使用bind指定上下文,以确保使用正确的this对象调用函数。

像这样吗?是的,这项工作,我想是时候阅读一些关于bind的文档了:不,在这一点上,它没有回调,所以不可能调用undefined的apply