Javascript 我可以访问对象';如果从匿名函数调用方法,则为s属性,但我可以';如果直接调用方法,则不会执行此操作。为什么?
$.Comment=函数(){ this.alertme=“Alert!”; } 当我调用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.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
);
}