大佬教程收集整理的这篇文章主要介绍了javascript – 在ajax回调函数中引用外部对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一个简化的例子:
// Let's create a new object
function MyObject() {
//
}
// Add some method to this object
MyObject.prototype.MyFunctionA = function() {
//
}
// Another method
MyObject.prototype.MyFunctionB = function(arg) {
// AJAX GET request
$.get('script.PHP', { par : arg }, function(data) {
// and here in the callBACk function
// I need to call MyObject.prototype.MyFunctionA method!
// but "this" references callBACk function so
// I don't kNow how to access MyObject here
});
}
我在评论中解释了我的问题.我怎样才能做到这一点?
解决方法:
最简单的:
// Let's create a new object
function MyObject() {
//
}
// Add some method to this object
MyObject.prototype.MyFunctionA = function() {
//
}
// Another method
MyObject.prototype.MyFunctionB = function(arg) {
// AJAX GET request
var me = this;
$.get('script.PHP', { par : arg }, function(data) {
// use me@L_343_6@mething instead of this@L_343_6@mething
});
}
可重用(使用范围陷阱):
function createDelegate(obj, handler)
{
return function() {
handler.apply(obj, arguments);
}
}
然后
@H_120_4@myObject.prototype.MyFunctionB = function(arg) { // AJAX GET request var me = this; $.get( 'script.PHP', { par : arg }, createDelegate(this, function(data) { // use this@L_343_6@mething }) ); }
因此,与下面的注释相关的一些代码,createDelegate也可以用几种不同的方式使用,其中一种方式是:
function createDelegate(obj, handler)
{
handler = handler || this;
return function() {
handler.apply(obj, arguments);
}
}
Function.prototype.createDelegate = createDelegate;
这允许你做以下事情:
var someObj = {a:1, b:function() {return this.a;}};
var scopedDelegateForCallBACk = someObj.b.createDelegate(whateverobj)
你也可以做父母的伎俩,但这对我来说太麻烦了.
或者,你可以做这样的事情:
function createDelegate(handler, obj)
{
obj = obj || this;
return function() {
handler.apply(obj, arguments);
}
}
Object.prototype.createDelegate = createDelegate;
并使用它:
someObj.createDelegate(someObj.b);
或者可能:
function createDelegateForMember(handlerName, obj)
{
obj = obj || this;
return function() {
obj[handlerName].apply(obj, arguments);
}
}
Object.prototype.createDelegate = createDelegateForMember;
然后
someobj.createDelegate("b");
以上是大佬教程为你收集整理的javascript – 在ajax回调函数中引用外部对象全部内容,希望文章能够帮你解决javascript – 在ajax回调函数中引用外部对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。