我开始使用jQuery,我遇到了以下问题:
function AClass(){
this.attribute = /*something*/
}
AClass.prototype.COMPLETE= function() {
/*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,.., this.COMPLETE);
}
所以,这就是我面临的问题。从完整的动画功能,我想访问AClass属性的值。问题是在那个上下文中this
指向动画的DOM元素,不再指向调用者对象。
答案 0 :(得分:0)
在变量中保存对原始this的引用:
function AClass(){
this.attribute = /*something*/
var self = this;
AClass.prototype.COMPLETE= function() {
/* Use: self.attributes */
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,..,COMPLETE);
}
}
答案 1 :(得分:0)
您可以使用$.proxy()
method将特定上下文绑定到回调。或者,如果您不关心旧浏览器(即IE< 9),您可以使用(JS 1.8.5).bind()
method。基本上你需要提供yourFunction
作为回调放置:
$.proxy(yourFunction, theRequiredContext)
// or
yourFunction.bind(theRequiredContext)
在示例代码的上下文中:
function AClass(){
this.attribute = /*something*/
}
AClass.prototype.COMPLETE= function() {
/*FROM HERE I WANT TO ACCESS TO THE ABOVE "this.attribute"!!*/
}
AClass.prototype.doSomething = function() {
$("something").animate(..,..,..,$.proxy(this.COMPLETE, this));
}