最近我的很多代码看起来都像这样......
function MyObjectClass (selector) {
this.color = "red";
this.$elt = $(selector);
// ... any other object vars here ...
// Example method for the object
this.showThenUpdateColor = function () {
// Keep a copy of "this" to use for callbacks
var o = this;
// Example of jQuery function that accepts a callback
o.$elt.fadeIn(function(){
// Inside of this callback function we need to access the main object
o.$elt.css({
"background-color" : o.color // This is where we need the "o"
});
});
}
}
var myObject = new MyObjectClass('#myObject');
myObject.showThenUpdateColor();
...我在对象方法中有一个回调。通常我将对象本身(“this”)分配给局部变量(通常为“o”,因为它简短易用),可以在回调中使用。
这是最佳使用内存吗?是否存在内存泄漏的危险?还有更好的方法吗?
答案 0 :(得分:3)
我建议您查看jQuery.proxy()。它允许您创建一个函数,该函数在执行时会在您指定的范围内执行另一个函数。然后你可以写:
this.showThenUpdateColor = function () {
// Example of jQuery function that accepts a callback
this.$elt.fadeIn($.proxy(this._onFadeInComplete, this));
}
function _onFadeInComplete() {
this.$elt.css({
"background-color" : this.color
});
}