Javascript 我可以访问对象';如果从匿名函数调用方法,则为s属性,但我可以';如果直接调用方法,则不会执行此操作。为什么?

Javascript 我可以访问对象';如果从匿名函数调用方法,则为s属性,但我可以';如果直接调用方法,则不会执行此操作。为什么?,javascript,jquery,Javascript,Jquery,$.Comment=函数(){ this.alertme=“Alert!”; } 当我调用$.Comment.send()时,此代码非常有效,但此代码无效 $.Comment.prototype.send = function() { var self = this; $.post( self.url, { 'somedata' : self.somedata }, self.callback //using direct

$.Comment=函数(){ this.alertme=“Alert!”; }

当我调用
$.Comment.send()
时,此代码非常有效,但此代码无效

$.Comment.prototype.send = function() {

  var self = this;
  $.post(
    self.url,
    {
      'somedata' : self.somedata
    },
    self.callback          //using direct access to method
  );

}
请你解释一下为什么


谢谢

第二次,self.callback将引用传递给函数$.Comment.prototype.callback。与所有Javascript函数一样,它不会绑定到同一个“this”对象(这与您存储
this
并使用上面的
self
的原因相同,但您使用它过于热情)


基本上,如果一个函数在不同的上下文中使用,
这个
不再指同一事物。在上面的第一个实例中,您将
存储为
self
,然后调用
self.callback()
。这将调用
回调
,并将
self
作为其
This
对象。第二个实例只是传递要调用的函数(没有上下文)。当调用时,
将丢失。

谢谢您的回答。对不起,我说的是英语,但你说“但是你使用它太热情了”是什么意思?你回答的另一部分对我来说很清楚,谢谢!很抱歉基本上,您使用的是
self
,其中
这个
仍然有效。只有当您将一个函数传递给另一个要在那里调用的函数时,这才是无效的。如果您在当前函数中,
仍然有效。
$.Comment.prototype.send = function() {

  var self = this;
  $.post(
    self.url,
    {
      'somedata' : self.somedata
    },
    self.callback          //using direct access to method
  );

}