最可能的情形,其中将this
的FieldEdit
方法执行期间引用非FieldEdit
其它的目的是像一个闭合,事件处理程序,或任何功能或方法与.call(someOtherScope)
或.apply(someOtherScope, args)
明确地称为嵌套范围内。
当然,您可以通过维护对FieldEdit
实例的变量引用并使用FieldEditInstance.<method>()
来解决此问题。
PrototypeJS允许您将与Function.bind
功能用于此目的,但它很容易实现,否则,无论是搭配:
var FieldEditInstance = this;
obj.methodThatUsesACallback(function() {
// use that instead of this
});
OR
var FieldEditInstance = this;
var callback = function() {
// ...
};
// This is more or less what PrototypeJS' Function.bind produces
var boundCallback = function() {
return callback.apply(FieldEditInstance, arguments);
};
obj.methodThatUsesACallback(boundCallback);
啊。事实上,它发生在我构建的自定义事件处理程序的回调函数中。多么痛苦。 – 2009-07-26 06:27:08