我有一个带有一些jquery的javascript对象,以获得视觉效果。
我可以在主动画函数中访问this.whatever,但不能从函数的末尾访问this.whatever (当动画完成时)
this.myDiv1 = 'myScrollableDiv';
this.myDiv2 = 'myDivToScrollTo';
this.test = 'It works';
$( "#"+this.myDiv1 ).animate({
scrollTop: $( "#"+this.myDiv2 ).position().top - $( "#"+this.myDiv1 ).position().top
}, 500, function() {
this.myOtherFunction();
});
this.myOtherFunction = function() {
alert(this.test);
};this.myOtherFunction不被调用,因为我认为this.myOtherFunction()行中(这个)引用的是当前的jQuery动画函数,而不是全局对象。
因此,我尝试创建一个作为标准javascript var的(this)副本。
var thisCopy = this;在动画函数之前,将thisCopy与所有现有的vars一起使用。这很管用..。
但是,我不想复制(这个),因为我需要更新实际的对象vars,以便与其他函数一起使用。
我还尝试将myOtherFunction声明为一个普通变量,然后不使用()调用myOtherFunction,它调用函数,但仍然不允许我访问对象vars。
在动画完成并访问所有全局对象变量之后,我如何调用this.myOtherFunction()?
发布于 2012-04-01 13:11:20
但是,
不想复制(这个),因为我需要更新实际的对象vars,以便与其他函数一起使用。
您似乎担心,当您需要thisCopy变量时,原始的this已经更改,并且您被旧数据困住了。
好吧,我有个好消息:thisCopy是对象的浅表拷贝,而不是自变量。例如:
var foo = { a: 1 };
var bar = foo;
foo.a = 2;
alert( bar.a ); // alerts "2"换句话说,使用var thisCopy = this;技术是安全的。
https://stackoverflow.com/questions/9964598
复制相似问题